我的应用程序状态应该存储到文件中。每次创建一个具有不同名称的新文件(例如“ data.bin.new”)后,写入后将删除原始的“ data.bin”并重命名“ data.bin.new”。最近我进行了一次动力手术,并且数据文件已损坏。它会如何发生以及如何防范?
public void SaveData()
{
string newName = _dataFile + ".new";
string bckName = _dataFile + ".bck";
string normalName = _dataFile;
using (var f = File.Create(newName))
{
f.SetLength(0);
AqlaSerializer.Serializer.Serialize(f, V);
}
var test = LoadData(newName);
if (!typeof(T).IsValueType && ReferenceEquals(test, null)) throw new Exception("Can't load what's been saved");
if (File.Exists(bckName)) File.Delete(bckName);
if (File.Exists(normalName)) File.Move(normalName, bckName);
File.Move(newName, normalName);
}