2

一部のデータのバックアップを保存しようとしています。バックアップが存在する場合は、それを削除し、最新のファイルにバックアップ ファイルの名前を付けてから、新しいファイルを最新のファイルとして保存します。

私が直面している問題は、既存のファイルを削除しても、別のファイルを同じ名前で保存できないことです。システムはまだファイルが存在すると考えており、実際には、プログラムが例外をスローした時点でファイルは削除されていません。私が考えることができる唯一のことは、移動操作が実行されるまでに「削除」操作が完了する時間がないということです。しかし、私はそれを修正する方法がわかりません。

コードは次のようになります。

 File.Delete(filePath.Substring(filePath.Length - 4) + ".bak");
 File.Move(filePath, filePath.Substring(0, filePath.Length - 4) + ".bak");

後で移動機能を実行するためにタイマーを設定することも考えましたが、これはおそらく非常にずさんで危険な問題の処理方法になると思われます。さらに、待機する必要がある時間は、システムによって異なる場合があります。だからもっと良い方法があるに違いないと思っています。

4

2 に答える 2

1

少し変更してコードを試してみましたが、うまくいきました。ファイル拡張子は 3 文字より多い場合も少ない場合もあるため、バックアップ ファイル名の定義方法を変更しただけです。

string backupPath = Path.GetFileNameWithoutExtension(filePath) + ".bak";
File.Delete(backupPath);
File.Move(filePath, backupPath);

ただし、うまくいかない場合は、バックアップの名前を「*.bak2」に変更してから削除してみてください。

それが役立つことを願っています...

于 2015-11-30T20:03:52.630 に答える