c# - 突然关机时XML文件数据丢失

标签 c# shutdown xelement

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

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

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

最佳答案

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

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

关于c# - 突然关机时XML文件数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156203/

相关文章:

c# - 如何在 buttton 的 onClick 事件中使用 asp.net 下载文件?

javascript - 单击事件后 Bootstrap 折叠不保留状态

c# - 指定的 LINQ 表达式包含对与 c# 中的不同上下文错误关联的查询的引用

c - 在 Windows 平台上以 C 编程语言在开始和结束时间之外运行脚本

linux - 在 SysVinit 中关闭之前执行具有 curl 调用的脚本

c# - 将 XML 提要读入 XElement

c# - 访问具有特定值的 XElement

c# - 通用基类的通用存储库和按键查找查询

c# - 使用 LINQ C# 检查是否存在具有特定属性的任何 XML 节点

ios - 为什么我的应用程序会在一夜之间关闭?