我正在尝试将XML字符串保存到XML文件中。在大多数情况下,XML文件已经存在,我想重写它。目前我得到一个例外,说明拒绝访问该文件。
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xmlString);
xDoc.Save(filePath);
如果我先加上这个:
if(File.Exists(filePath)
{
File.Delete(filePath);
}
那么没有问题。所以我假设它不会让我覆盖文件?我不想每次都删除文件。
这里适当的解决方案是什么?我应该先尝试加载文件,并用my xml替换所有内容吗?
答案 0 :(得分:0)
您可以尝试写入xml文件
using (TextWriter writer = new StreamWriter(filePath))
{
doc.Save(writer);
writer.Close();
}
答案 1 :(得分:0)
在您的问题中包含异常类型和消息可能会有所帮助。如果您收到UnauthorizedAccessException,这些通常有两种形式:缺少权限和并发文件访问。
由于您可以通过托管文件访问调用(我假设您正在通过相同的实用程序和凭据执行)删除该文件,因此在尝试执行时可能需要查看哪些进程可以访问您的文件保存。如果有另一个进程打开或写入该位置(包括文本编辑器),或者另一个进程正在使用自定义权限分配编写该文件(可能缺少“创建文件/写入数据”权限并包括“删除文件”特权),它可能导致这种类型的异常。
如果您的程序是此文件的唯一使用者,并且您一次只执行一个线程,则可能需要对该文件从父文件夹继承的权限进行完整性检查。