将应用程序状态写入磁盘时,如何防止电源中断

时间:2019-08-31 09:21:07

标签: c# windows io filesystems ntfs

我的应用程序状态应该存储到文件中。每次创建一个具有不同名称的新文件(例如“ 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);
    }

0 个答案:

没有答案