发生突然关闭时,XML文件数据会丢失

Yos*_*ssi 2 c# xelement shutdown

我有一个应用程序,使用XElement对象的.Save("path")方法每500毫秒将数据存储在XML文件中.问题是:当发生突然关闭时,文件的内容将被删除,因此在下次运行应用程序时,无法使用该文件.

如何防止/确保数据不会丢失?PS:我在Windows 7下使用.NET 2010 C#

我做了一个实验:不是写入我创建的同一个data.xml文件(通过从原始文件复制)每次都有一个新文件,当电源关闭时从data.xml文件复制它会损坏以前创建的所有文件?!?!?

Jul*_*ano 5

我们假设您的文件是data.xml.data.xml写入一个临时文件data.xml.tmp,而不是一直写入,完成后重命名为data.xml.但是,如果您已经有data.xml文件,则重命名将不起作用,因此您需要先删除它,然后重命名临时文件.

这样,data.xml将包含最后的安全数据.如果您突然关机,则不完整的文件将是临时的data.xml.tmp.如果您的程序稍后尝试读取该文件并且没有data.xml文件,则表示删除和重命名操作之间发生了关闭,因此您必须改为读取临时文件.我们知道它是安全的,否则会有一个data.xml文件.