我尝试编写文件,但它仍然为空 ...
FileStream f = new FileStream("HighScore.txt",
FileMode.OpenOrCreate,
FileAccess.ReadWrite);
StreamWriter streamWriter = new StreamWriter(f);
streamWriter.WriteLine("aaaaa");
是否有人遇到此问题并可以帮助我?
答案 0 :(得分:6)
你必须Close
作家;由于StreamWriter
为IDisposable
,所以请使用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");
}