見出し画像

Dartでコマンドラインプロンプト【IO編】

こんにちは、株式会社Pentagon代表の山本です。

https://pentagon.tokyo

当社では「アプリを駆使した事業を立ち上げたい」方のために、アプリの設計・デザイン・開発までまるっとサポートしています。

前回、Dartのコマンドラインプロンプトについて解説しました。

今回は、プロンプトを使ってJSONファイルのインプットとアウトプットを行います。

import 'dart:convert';
import 'dart:io';
import 'package:prompts/prompts.dart' as prompts;

Future<void> main() async {
 //現在のディレクトリを取得
 final cwd = Directory.current.path;
 //入力するJSONのパスを指定
 final filePath = prompts.get('JSONファイルのパスを入力してください', defaultsTo: cwd);
 final jsonFile = File(filePath);
 if (!jsonFile.existsSync()) {
   throw '$jsonFile は存在しません。';
 }
 //JSONを読み込み
 var json = jsonDecode(jsonFile.readAsStringSync());
 stdout.write('-------------------------------\n');
 stdout.write('$json\n');
 stdout.write('-------------------------------\n');
 //名前を変更
 final newName = prompts.get('名前を入力してください');
 json['name'] = newName;
 //再度JSONを出力
 await jsonFile.writeAsString(jsonEncode(json));
 json = jsonDecode(jsonFile.readAsStringSync());
 stdout.write('-------------------------------\n');
 stdout.write('$json\n');
 stdout.write('-------------------------------\n');
}

実行した結果

JSONファイルのパスを入力してください (/Users/shinyayamamoto/work/pentagon/dart_prompts) ‥ sample.json
-------------------------------
{user_id: 1, name: YAMADA TARO}
-------------------------------
✔ 名前を入力してください ‥ YAMADA HANAKO
-------------------------------
{user_id: 1, name: YAMADA HANAKO}
-------------------------------

ファイルの操作関しては、以下のリンクのドキュメントが参考になります。

今回は以上です!

次回は、yamlファイルの読み込みとパースについて調べてみようと思います。

この記事が気に入ったらサポートをしてみませんか?