0

次の質問があります。現在、シャットダウン時に構成ファイルを書き出しています。書き込み中にユーザーがプロセスを強制終了し、構成が破損することがありました。したがって、ディスク上のファイルが常に正しく、部分的に書き込まれたファイルなどがないことを確認する必要があります。もちろん、バックアップ ファイルを使用して自分でパターンを実装することもできます (バックアップに書き込み、古いファイルを新しいファイルに置き換える、失敗した書き込みを検出して回復するためのロジックなど)。すでにこれを処理しているものはありますか?

4

2 に答える 2

1

Windows Vista で導入されたトランザクション NTFSを使用すると、ファイル システムでアトミック操作 (読み取り、書き込み、削除など) を実行できます。

.Net に使用できるマネージ ラッパーは次のとおりです: http://archive.msdn.microsoft.com/txfmanaged

残念ながら、Microsoft は Windows のこの優れた機能を廃止することを検討していることに注意してください。http://msdn.microsoft.com/en-us/library/windows/desktop/hh802690(v=vs.85).aspxを参照してください。

于 2013-04-04T12:08:35.787 に答える
0

Sysyem.IO.File.Replace構成ファイルを一時ファイルに書き込んでから、次の方法を使用して実際のファイルを一時ファイルに置き換えることができます。

string config = @"C:\my_config.xml";
string backup = @"C:\my_config.bak";
string temp = @"C:\temp_config.xml";

SaveConfigurationTo(temp);
File.Replace(temp, config, backup);

古い構成ファイルのバックアップを作成したくない場合は、null3 番目の引数として渡すことができます。

参照: MSDNの File.Replace メソッド

于 2013-04-04T12:23:50.157 に答える