好的,所以解释一下;我正在开发一个可能在任何时间点出现电源故障的系统,我正在测试的一点是在我使用 StreamWriter 写出文件之后直接进行的。下面的代码:
// Write the updated file back out to the Shell directory.
using (StreamWriter shellConfigWriter =
new StreamWriter(@"D:\xxx\Shell\Config\Game.cfg.bak"))
{
for (int i = 0; i < configContents.Count; i++)
{
shellConfigWriter.WriteLine(configContents[i]);
}
shellConfigWriter.Close();
}
FileInfo gameCfgBackup = new FileInfo(@"D:\xxx\Shell\Config\Game.cfg.bak");
gameCfgBackup.CopyTo(@"D:\xxx\Shell\Config\Game.cfg", true);
shellConfigWriter
将(a of strings)的内容写入List
用作临时存储的文件,然后将其复制到原始文件上。现在,在此代码完成执行后,电源丢失,再次启动备份时,文件Game.cfg
存在并且大小正确,但完全空白。起初我认为这是由于在硬盘驱动器上启用了写入缓存,但即使关闭它仍然会发生(尽管不太常见)。
任何想法都会非常受欢迎!
更新:好的,所以在删除.Close()
语句并在每次写入操作后调用.Flush()
后,文件仍然是空白的。我可以更进一步,在创建新文件之前先创建原始文件的备份,然后我有足够的备份来进行完整性检查,但我认为这无助于解决根本问题(当我告诉它写入时,刷新并关闭文件......它没有!)。