为何我的StreamWriter无法写入.txt文件?附代码求助
解决StreamWriter写入后文件为空的问题
嘿,我之前也碰到过一模一样的问题!你遇到的情况是因为StreamWriter内部有缓冲区,调用WriteLine()之后,内容其实还留在内存的缓冲区里,并没有真正写入到磁盘文件中。
要解决这个问题,有几个实用的办法:
调用
Flush()方法:手动把缓冲区的内容强制写入文件FileStream f = new FileStream("HighScore.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite); StreamWriter streamWriter = new StreamWriter(f); streamWriter.WriteLine("aaaaa"); streamWriter.Flush(); // 强制刷新缓冲区到文件 streamWriter.Close(); // 记得关闭流释放资源 f.Close();使用
using语句(推荐):using会自动帮你释放资源,包括自动刷新缓冲区和关闭流,这是最规范的写法,还能避免异常情况下的资源泄漏using (FileStream f = new FileStream("HighScore.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) using (StreamWriter streamWriter = new StreamWriter(f)) { streamWriter.WriteLine("aaaaa"); } // 代码块结束时自动执行Flush和Close操作直接调用
Close()方法:关闭StreamWriter的时候,它会自动先刷新缓冲区,但单独用Close不如using安全——万一代码抛出异常,可能就没机会执行Close了
另外补充一点:如果文件被其他进程占用,也可能出现写入失败,但从你的代码来看,最核心的原因就是没触发缓冲区的内容写入磁盘~
内容的提问来源于stack exchange,提问作者omer5611
相关产品推荐
相关产品推荐

