使用C#进行安全磁盘操作

时间:2013-04-04 11:58:18

标签: c# io

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

2 个答案:

答案 0 :(得分: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

答案 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