如何在C#中刷新()?

时间:2014-07-16 19:56:01

标签: c# winforms file-io stream flush

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

我试过了两个:

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

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

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

法拉盛没有按照你的想法做到。它不会使其他程序可以看到数据。它迫使它做磁盘。这不是你的问题。

磁盘上的内容并不重要。重要的是Windows文件缓存向其他程序提供的内容。文件内容可以在内存中,并且仍然可以在应用程序之间同步。

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

链接的Raymond Chen文章有一个解决方法,您可以使用它来强制立即显示当前信息。