わかりました、説明します。私は、いつでも電源障害が発生する可能性のあるシステムを開発しています。私がテストしているポイントの 1 つは、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
(List
文字列の a) の内容を一時的な保存場所として使用されるファイルに書き込み、それを元のファイルにコピーします。このコードの実行が終了すると、電源が失われ、バックアップを再開すると、ファイルGame.cfg
は存在し、正しいサイズですが、完全に空白になります。最初は、これはハード ドライブで書き込みキャッシュが有効になっているためだと思っていましたが、オフにしても発生します (頻度は低くなりますが)。
どんなアイデアでも大歓迎です!
更新:.Close()
わかりました。ステートメントを削除し、.Flush()
すべての書き込み操作の後に呼び出した後でも、ファイルは空白になります。さらに一歩進んで、新しいファイルを作成する前に元のファイルのバックアップを最初に作成し、完全性チェックを行うのに十分なバックアップを作成することもできますが、根本的な問題の解決には役立たないと思います (ファイルに書き込み、フラッシュして閉じるように指示すると...そうではありません!)。