C# 用C语言实现安全磁盘操作#
我有一个问题。现在,我们正在关闭时写入配置文件。碰巧用户在写入过程中被进程终止,导致配置损坏。因此,我必须确保磁盘上的文件始终正确,并且没有部分写入的文件等。当然,我可以自己使用备份文件实现一些模式(比如写到备份,然后用新文件替换旧文件,检测和恢复失败的写操作的一些逻辑…),但是可能已经有一种框架可以处理这个问题了 Windows Vista引入的事务性NTFS,允许在文件系统上执行原子操作(读、写、删除…) 下面是一个可用于.Net的托管包装器:C# 用C语言实现安全磁盘操作#,c#,io,C#,Io,我有一个问题。现在,我们正在关闭时写入配置文件。碰巧用户在写入过程中被进程终止,导致配置损坏。因此,我必须确保磁盘上的文件始终正确,并且没有部分写入的文件等。当然,我可以自己使用备份文件实现一些模式(比如写到备份,然后用新文件替换旧文件,检测和恢复失败的写操作的一些逻辑…),但是可能已经有一种框架可以处理这个问题了 Windows Vista引入的事务性NTFS,允许在文件系统上执行原子操作(读、写、删除…) 下面是一个可用于.Net的托管包装器: 请注意,不幸的是,微软正在考虑不推荐Windo
请注意,不幸的是,微软正在考虑不推荐Windows的这一伟大功能。请参见您可以将配置文件写入临时文件,然后使用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上。您可以查看自Vista以来可用的事务性文件系统。你需要PInvoke来使用它。另一种方法是使用数据库而不是文件