XMLDocument.Save是一个primefaces操作吗?

无论如何,使用XMLDocument.Save()创建的文件的另一个进程监视可能会遇到一个部分文件? 如果Save()覆盖现有文件会有什么不同吗?

如果您这样保存,您应该没有任何问题。

using (var file = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)) { xmlDoc.Save(file); } 

我不认为有任何primefaces性的保证。 你不应该依赖它。

编写文件通常不是primefaces的。 查看Process Monitor以了解操作系统公开的内容。

XmlDocument.Save(string)使用FileShare.Read 。 ChaosPandion的解决方案指定FileShare.None 。 查看MSDN上的System.IO.FileShare以获取差异。

这个答案https://stackoverflow.com/a/487198/1429390以易于使用的方式为AFAIK提供某种primefaces性。 原则是写入临时文件,并为调用者提供在关闭时重命名文件(以及任何其他任何内容)的机会。 这样,在创建和填充文件时可能发生的任何事情都无法破坏可能存在的文件。

更新:除了它没有,因为System.IO.File.Move()拒绝覆盖。 有关解决方法,请参阅https://stackoverflow.com/a/10305475/1429390 。