我有一个问题。现在,我们正在关机时写出配置文件。碰巧用户在写入过程中遇到了进程终止,导致配置损坏。因此,我必须确保磁盘上的文件始终正确,并且没有部分写入的文件等。当然,我自己可以使用备份文件实现一些模式(比如写入备份,然后用新的文件替换旧文件,检测并恢复失败的写入的一些逻辑......)但也许有一种框架在那里已经处理这个?
答案 0 :(得分:1)
事务性NTFS 允许在文件系统上执行原子操作(读取,写入,删除...)。
这是一个可以用于.Net的托管包装:http://archive.msdn.microsoft.com/txfmanaged
请注意,遗憾的是,微软正在考虑弃用Windows的这一强大功能。见http://msdn.microsoft.com/en-us/library/windows/desktop/hh802690(v=vs.85).aspx
答案 1 :(得分: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);
如果您不想创建旧配置文件的备份,可以将null
作为第三个参数传递。
请参阅MSDN上的File.Replace Method。