.net 安全保存到 Xml 文件以防崩溃

发布于 2025-01-01 11:05:59 字数 183 浏览 0 评论 0原文

如果应用程序在 XmlDocument.Save() 方法期间崩溃,会发生什么情况?

例如,我将一些大量信息保存到 Xml 文件中。应用程序崩溃并且文件的 xml 格式变得不正确并且无法再次加载。如何预防呢?

另外,应用程序的设置文件怎么样?如果应用程序在保存设置文件时崩溃,有效性会被破坏吗?

What will happen if application crashes during XmlDocument.Save() method?

For example, I am saving some huge inforamtion into Xml file. Application crashes and file's xml format becomes incorrect and it can't be loaded again. How to prevent it?

Also, what about the application's setting file? Will the validity be broken If app crashes during saving setting's file ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剪不断理还乱 2025-01-08 11:05:59

如果应用程序在保存设置文件期间崩溃,则该文件将不再有效。对于小 xml 文件,我使用下一个代码来防止损坏:

Using ms As New MemoryStream
   xmlDoc.Save(ms)
   Using outStream As FileStream = File.Open(filename,
             FileMode.Create, FileAccess.Write, FileShare.Read)
      ms.WriteTo(outStream)
   End Using
End Using

对于大文件,有不同的方法可以做到这一点:

  1. Vista 及更高版本下有可用的事务性 NTFS,.NET下的原子文件复制, File.Move 的原子性
  2. 使用临时文件保存信息,然后使用重命名安全替换旧文件

If application crashes during saving settings file, than that file will not be valid anymore. For a small xml files I am using next code to prevent corruption:

Using ms As New MemoryStream
   xmlDoc.Save(ms)
   Using outStream As FileStream = File.Open(filename,
             FileMode.Create, FileAccess.Write, FileShare.Read)
      ms.WriteTo(outStream)
   End Using
End Using

For big files there are different ways to do that:

  1. There are transactional NTFS available under Vista and up, Atomic file copy under .NET, Atomicity of File.Move
  2. Use temporary file to save information, then use rename for safe replace of old file
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文