openWrite 抽象方法

IOSink openWrite(
  1. {FileMode mode = FileMode.write,
  2. Encoding encoding = utf8}
)

为文件创建一个新的独立 IOSink

当不再使用时,必须关闭 IOSink 以释放系统资源。

文件 IOSink 可以以两种模式打开

通过返回的 IOSink 写入字符串时,将使用通过 encoding 指定的编码。返回的 IOSink 有一个可更改的 encoding 属性,在创建 IOSink 后。

返回的 IOSink 不将换行字符("\n")转换为平台的传统行结束(例如,在 Windows 上的 "\r\n")。如果需要特定平台的行结束,请写入 Platform.lineTerminator

如果在打开或写入文件时发生错误,IOSink.doneIOSink.flush、和 IOSink.close 任务都将完成 FileSystemException。您必须处理从 IOSink.done 未来的错误,否则错误将未被捕获。

例如,FutureExtensions.ignore IOSink.done 错误,并记住在使用 try/catch 代码块时,记得 await IOSink.flushIOSink.close 调用。

final sink = File('/tmp').openWrite(); // Can't write to /tmp
sink.done.ignore();
sink.write("This is a test");
try {
  // If one of these isn't awaited, then errors will pass silently!
  await sink.flush();
  await sink.close();
} on FileSystemException catch (e) {
  print('Error writing file: $e');
}

要处理在 IOSink.flushIOSink.close 上下文之外异步的错误,您可以在 IOSink.doneFuture.catchError

final sink = File('/tmp').openWrite(); // Can't write to /tmp
sink.done.catchError((e) {
 // Handle the error.
});

实现

IOSink openWrite({FileMode mode = FileMode.write, Encoding encoding = utf8});