如何在 openWrite 之后完成/刷新写入/关闭

use*_*952 1 dart

此代码尝试打开一个现有文件,然后通过 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);
}
Run Code Online (Sandbox Code Playgroud)

完成后文件为空。如果 exit(0) 不存在,则可以正常工作。应执行哪些调用以确保在退出之前写入所有写入内容?

Mat*_*t B 5

由于编写器是异步的,因此您将需要使用编写器的did属性,以便在流的写入和关闭完成时收到通知。例如:

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);
  });
}
Run Code Online (Sandbox Code Playgroud)