为什么我的StreamWriter没有写入.txt文件?

时间:2018-04-17 11:03:27

标签: c# stream

我尝试编写文件,但它仍然为空 ...

 FileStream f = new FileStream("HighScore.txt", 
                                FileMode.OpenOrCreate, 
                                FileAccess.ReadWrite);

 StreamWriter streamWriter = new StreamWriter(f);
 streamWriter.WriteLine("aaaaa");

是否有人遇到此问题并可以帮助我?

2 个答案:

答案 0 :(得分:6)

你必须Close作家;由于StreamWriterIDisposable,所以请使用using

 using(FileStream f = new FileStream("HighScore.txt", 
                                      FileMode.OpenOrCreate, 
                                      FileAccess.ReadWrite)) {
   using(StreamWriter streamWriter = new StreamWriter(f)) {
     streamWriter.WriteLine("aaaaa");
   }
 }

通常,编写者缓存更新并在结束时应用它们。如果要在过程中间的某处应用更改,请致电Flush()。如果您只想将文本写入文件,可以更容易

File.WriteAllText("HighScore.txt", "aaaaa");

答案 1 :(得分:2)

StreamWriter正在缓冲您的数据。填充后自动刷新缓冲数据或关闭连接时,您没有执行任何操作。

您的情况是数据太小,因此没有刷新。

关闭连接将解决问题。

你几乎没有选择。

手动冲洗 - 少推荐

要保存数据时手动添加刷新。

steamWriter.Flush()

手动关闭连接 - 更好,但仍然不是最佳。

streamWriter.Close();

处置连接 - 最好。

使用using包装代码将在范围{..}完成后处置资源,dispose操作将关闭连接,从而刷新数据。

using (var f = new FileStream("HighScore.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (var streamWriter = new StreamWriter(f))
{
    streamWriter.WriteLine("aaaaa");
}