c# - 如何在 C# 中刷新()?

标签 c# winforms file-io stream flush

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

我都尝试过:

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

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

如何解决这个问题?

最佳答案

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

冲洗并不像你想象的那样。它不会使数据对其他程序可见。它强制它执行磁盘操作。这不是你的问题。

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

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

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

关于c# - 如何在 C# 中刷新()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789523/

相关文章:

C# - Windows 窗体 - 强制重新绘制,就好像屏幕外窗口已经移动一样

C# 自动隐藏窗体

c# - 在文件中搜索字节序列 (C#)

java - 读取 .txt 文件。我将如何读取整个字符串(忽略空格)并将其分配给变量?

c# - Selenium Webdriver 与 Shadow DOM

c# - 如何对绑定(bind)到 ListBoxControl 的 ObservableCollection<T> 进行排序?

javascript - 如何在 jquery 中获取 viewbag 数据?

c# - GMail API/OAUTH2 - 如何使用已弃用的传统 C# SMTP 方法发送电子邮件?

c++ - 如何让 _rmdir 删除的目录在 Windows 资源管理器中立即更新?

c# - map 控制 Gmap.net 崩溃