StreamWriter没有将最后几个字符写入文件

Rob*_*ood 9 c# iostream

我们遇到了一个服务器的问题,并且它使用了StreamWriter类.有没有人遇到类似下面的问题?如果是这样,解决问题的解决方案是什么?

  using( StreamWriter logWriter = File.CreateText( logFileName ) )
  {
    for (int i = 0; i < 500; i++)
      logWriter.WriteLine( "Process completed successfully." );
  } 
Run Code Online (Sandbox Code Playgroud)

写出文件时,会生成以下输出:

  Process completed successfully.
  ...  (497 more lines)
  Process completed successfully.
  Process completed s
Run Code Online (Sandbox Code Playgroud)

尝试在关闭之前添加logWriter.Flush(),没有任何帮助.我写出的文本行越多,发生的数据丢失就越多.

小智 16

我自己也有一个非常相似的问题.我发现,如果我在对流进行任何写入之前启用了AutoFlush,它就会按预期开始工作. logWriter.AutoFlush = true;


Bon*_*ton 5

有时即使你调用flush(),它也不会起作用。因为 Flush() 将导致流写入流中的大部分数据,除了其缓冲区的最后一个块。

try
{
 // ... write method
 // i dont recommend use 'using' for unmanaged resource
}
finally
{
 stream.Flush();
 stream.Close();
 stream.Dispose();
}
Run Code Online (Sandbox Code Playgroud)


Hen*_*man 1

无法重现这个。

在正常情况下,这不应该也不会失败。

  • 这是失败的实际代码吗?文本“处理完成”表明它是一个摘录。
  • 涉及任何线程吗?
  • 网络驱动器还是本地驱动器?
  • ETC。