我正在将大量数据写入文件,这可能需要很长时间,因此我想在调用save()函数后立即将内容写入文件。目前,文件大小(我正在从Windows资源管理器中查看)保持为0字节大小,直到程序写入终止。

我都尝试过:

fileOut = new StreamWriter(fileName);
fileOut.AutoFlush = true;




fileOut.Write(contents);
fileOut.Flush();


我该如何解决?

最佳答案

这是不关闭流的典型症状。像往常一样,将资源使用情况包装在using语句中。

冲洗不会像您认为的那样起作用。它不会使数据对其他程序可见。它强制它做磁盘。这不是你的问题。

磁盘上的内容无关紧要。重要的是Windows File Cache呈现给其他程序的内容。文件内容可以在内存中,但仍可以在应用程序之间同步。

The metadata behavior (length, times, ...) is strange on Windows.事实证明,枚举目录可以返回陈旧的数据。直接查看文件(打开其属性窗口)应始终返回准确的信息。

链接的Raymond Chen文章提供了一种变通办法,您可以用来强制立即显示当前信息。

07-24 09:19