Boo*_*unz 2 io byte file dart flutter
在File.writeAsBytes的 dart.io 文档中
它谈到了冲洗论证:
如果参数flush设置为true,写入的数据将在返回的future完成之前刷新到文件系统。
但我不知道“刷新到文件系统”是什么意思。
为什么有知识的人会选择将其设置为 true?
为什么有知识的人会选择将其设置为 false?
由于 I/O 传统上非常昂贵,因此代码和物理磁盘之间存在许多不同的缓冲区层,以尝试批处理/合并 I/O 操作以提高效率,并避免让代码等待 I/O O 操作完成。
“刷新到文件系统”意味着所有缓冲的写操作都已写入文件系统(这是物理磁盘之上的操作系统抽象)。例如,如果您File.writeAsBytes 在不刷新的情况下调用,则尝试从该文件读取的其他内容可能仍然会看到旧内容,即使相应的内容Future已完成。如果您通过刷新执行写入,则应保证该文件的读取在Future完成后看到新内容。
为什么有知识的人会选择将其设置为 true?
如果您想确切地知道数据何时被写入,您可以选择显式刷新。
为什么有知识的人会选择将其设置为 false?
您可能不想刷新每次写入,因为这样做会更慢。例如,如果您正在进行许多小写入,那么最好在不刷新的情况下发出所有这些写入,然后可能在最后一次写入时刷新。
请注意,这是一个通用的操作系统概念,并不特定于 Dart。
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |