【发布时间】:2016-08-22 19:03:06
【问题描述】:
我使用File.WriteAllBytes 创建一个文件“somefile.txt”。这是否意味着当 File.WriteAllBytes 从执行返回时,传递给 File.WriteAllBytes 的字节实际上在磁盘上?例如,我用 File.WriteAllBytes("somefile.txt", bytes) 写入 X 个字节,然后检查磁盘上文件的大小,如果大小等于 bytes.length。如果等于,我假设文件已完全写入磁盘。
假设字节大小为 1.5GB,在机器上写入这样的数量需要一段时间;写入文件的磁盘是映射的网络驱动器。 是否可能 File.WriteAllBytes 从执行返回,但操作系统仍在向磁盘写入字节?
【问题讨论】:
-
我不这么认为,因为
File.WriteAllBytes在写入字节后关闭文件 -
@Pikoh 方法 close() 是否等待传递的字节实际写入磁盘?
-
我认为 close 首先将所有写入缓冲区的数据复制到磁盘,然后释放所有资源。我不相信它有办法检查它的字节是否已写入,但我认为它们是。
-
无论如何..你为什么要问这个?如果您有特定问题,我认为您应该询问该问题
-
@Pikoh 我正在将文件写入映射的网络驱动器。为了显示文件已完全写入,我在调用 File.WriteAllBytes 后立即获取 DateTime.Now 并将其放入属性 WritingEnded。这里我假设 File.WriteAllBytes 返回后字节实际上在磁盘上,即WritingHasEnded。 我想摆脱这种假设 :)。
标签: c# file operating-system byte hard-drive