此代码写入文件(在 Windows 10 上执行):
class Program
{
static void Main(string[] args)
{
StreamWriter sw = new StreamWriter(@"D:\Documents\JS\1.txt");
for (int i = 0; i<=100000;i++)
{
sw.WriteLine(i.ToString());
}
Console.ReadKey();
}
}
但是,在文件末尾,我发现:
99882
99883
99884
99885
99886
99887
99888
99889
99890
9
如果在循环之后我使用
sw.Close();
然后一切都很好。在 Windows 7 PC 上工作时,他一直写到最后。
为什么会这样?
你还没有关闭
StreamWriter
。使用
using
:StreamWriter
和其他文件编写器通常使用内存缓冲区以块的形式写入文件。要清除缓冲区(并将数据从缓冲区写入文件),请使用
.Flush()
. 该方法.Close()
还会导致缓冲区被清除,尽管这不是它的主要目的。正如他们所说,您在某些设备上添加到最后的事实是“幸运的”。