gpt4 book ai didi

flutter - File.writeAsBytes 的 'flush' 参数在 Dart.io 中有什么作用?

转载 作者:行者123 更新时间:2023-12-01 23:09:11 25 4
gpt4 key购买 nike

在 dart.io 文档中 File.writeAsBytes

它说的是 flush 参数:

If the argument flush is set to true, the data written will be flushedto the file system before the returned future completes.

但是我不知道“flushed to the file system”是什么意思。

为什么知识渊博的人会选择将其设置为 true?

为什么知识渊博的人会选择将其设置为 false?

最佳答案

由于传统上 I/O 非常昂贵,因此在您的代码和物理磁盘之间存在许多不同的缓冲区层,以尝试批处理/合并 I/O 操作以提高效率并避免让您的代码等待用于完成 I/O 操作。

“刷新到文件系统”意味着所有缓冲的写入操作都已写入文件系统(这是物理磁盘之上的操作系统抽象)。例如,如果您调用 File.writeAsBytes 而不 刷新,则尝试从该文件读取的其他内容可能仍会看到旧内容,即使相应的 Future 已经完成。如果您执行写入 with 刷新,那么当 Future 完成时,应该保证对该文件的读取可以看到新内容。

Why would someone knowledgable choose to set it to true?

如果您想确切知道数据何时写入,您可以选择显式刷新。

Why would someone knowledgable choose to set it to false?

您可能不想刷新 写入,因为这样做会更慢。例如,如果您要进行许多小写操作,最好在不刷新的情况下发出所有这些操作,然后可能在最后一次写入时刷新。

请注意,这是一个通用的操作系统概念,并不特定于 Dart。

关于flutter - File.writeAsBytes 的 'flush' 参数在 Dart.io 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70220634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com