1

このコードは、既存のファイルを開き、openWrite を介してテキストを追加しようとしています。

import 'dart:io';

main() {
  File inFile = new File('/tmp/foo.txt');
  String currentText = inFile.readAsStringSync();
  var writer = inFile.openWrite();
  writer.write(currentText);
  writer.write("\nOne more line");
  writer.close();
  exit(0);
}

完了後、ファイルは空です。exit(0) がない場合は正常に動作します。終了前にすべての書き込みが確実に書き込まれるようにするには、どの呼び出しを行う必要がありますか?

4

1 に答える 1

5

ライターは非同期であるため、ライターのdoneプロパティを使用して、ストリームの書き込みと終了が完了したときに通知を受ける必要があります。例えば:

import 'dart:io';

main() {
  File inFile = new File('/tmp/foo.txt');
  String currentText = inFile.readAsStringSync();
  var writer = inFile.openWrite();
  writer.write(currentText);
  writer.write("\nOne more line");
  writer.close();
  writer.done.then((_) {
    exit(0);
  });
}
于 2013-04-08T17:37:58.973 に答える