如何立即写入文件?

时间:2009-10-05 05:21:01

标签: c# filesystems

我想保留一个日志文件,我正在使用TextWriter / StreamWriter将消息写入我的日志文件。我在写完邮件后调用TextWriter.Flush(),但我的消息仍然没有立即显示。它只会在我调用Close时出现,我不想一直重新打开并关闭文件只是为了立即查看消息。

3 个答案:

答案 0 :(得分:5)

您可能想尝试自己构建一个FileStream,将FileOptions.WriteThrough传递给构造函数。然后使用该FileStream构造StreamWriter。 WriteThrough选项绕过缓存。

答案 1 :(得分:3)

您还可以将StreamWriter.AutoFlush属性设置为true。这样,写入StreamWriter的任何内容都会立即写入磁盘(每次调用Write后)。

来自AutoFlush上的MSDN documentation

  

获取或设置一个指示的值   StreamWriter是否会刷新   它对底层流的缓冲区   每次打电话之后   StreamWriter..Write。

马克

答案 2 :(得分:0)

确保使用读共享访问权限打开日志文件,允许文件的所有后续打开以进行读取,但拒绝写访问权限。这样您就可以从另一个程序监视日志。