File.WriteAllBytes 在映射网络驱动器上完成后的文件大小
File size after File.WriteAllBytes finishes on mapped network drive
我使用 File.WriteAllBytes 创建文件 "somefile.txt"。这是否意味着当执行 File.WriteAllBytes returns 时传递给 File.WriteAllBytes 的字节实际上在磁盘上?例如,我用 File.WriteAllBytes("somefile.txt", bytes) 写了 X 个字节,然后检查磁盘上文件的大小是否等于 bytes.length。如果等于我认为文件已完全写入磁盘。
假设字节大小是1.5GB,在机器上写入这样的数量需要一段时间;写入文件的磁盘是映射网络驱动器。 是否有可能 File.WriteAllBytes returns 已执行,但 OS 仍在向磁盘写入字节?
是的,在您的编程 API 中完成写入后,OS 可能(或可能不会)实际上仍在写入磁盘是完全正常的。 不过,这实际上不是您关心的问题。如果您要求尺寸,您将获得您所写的预期和正确尺寸,即使您的 OS 使用了写入缓存。这些流程都被OS给你抽象出来了,不用担心。
但是正如您在评论中提到的网络驱动器:不过,网络驱动器通常不是这种情况。因为 OS 不能简单地使用写缓存并异步完成写执行。 (网络可能会意外中断等)
我使用 File.WriteAllBytes 创建文件 "somefile.txt"。这是否意味着当执行 File.WriteAllBytes returns 时传递给 File.WriteAllBytes 的字节实际上在磁盘上?例如,我用 File.WriteAllBytes("somefile.txt", bytes) 写了 X 个字节,然后检查磁盘上文件的大小是否等于 bytes.length。如果等于我认为文件已完全写入磁盘。
假设字节大小是1.5GB,在机器上写入这样的数量需要一段时间;写入文件的磁盘是映射网络驱动器。 是否有可能 File.WriteAllBytes returns 已执行,但 OS 仍在向磁盘写入字节?
是的,在您的编程 API 中完成写入后,OS 可能(或可能不会)实际上仍在写入磁盘是完全正常的。 不过,这实际上不是您关心的问题。如果您要求尺寸,您将获得您所写的预期和正确尺寸,即使您的 OS 使用了写入缓存。这些流程都被OS给你抽象出来了,不用担心。
但是正如您在评论中提到的网络驱动器:不过,网络驱动器通常不是这种情况。因为 OS 不能简单地使用写缓存并异步完成写执行。 (网络可能会意外中断等)