0

我有以下问题。现在,我们正在关闭时写出配置文件。碰巧用户在写入过程中遇到了进程终止,导致配置损坏。因此,我必须确保磁盘上的文件始终正确,并且不存在部分写入的文件等。当然,我可以自己使用备份文件实现一些模式(比如写入备份,然后用新文件替换旧文件,一些逻辑来检测和恢复失败的写入......)但也许有一种框架那里已经处理了这个?

4

2 回答 2

1

Windows Vista 引入的事务性 NTFS允许在文件系统上执行原子操作(读取、写入、删除...)。

这是一个可用于 .Net 的托管包装器:http: //archive.msdn.microsoft.com/txfmanaged

请注意,遗憾的是,微软正在考虑弃用 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);

如果您不想创建旧配置文件的备份,则可以null作为第三个参数传递。

请参阅: MSDN 上的File.Replace 方法

于 2013-04-04T12:23:50.157 回答