1

我正在尝试将 XML 字符串保存到 XML 文件中。在大多数情况下,XML 文件已经存在,我想重写它。目前我收到一个异常,说对该文件的访问被拒绝。

XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xmlString);
xDoc.Save(filePath);

如果我先添加这个:

if(File.Exists(filePath)
{
    File.Delete(filePath);
}

那么就没有问题了。所以我假设它不会让我重写文件?我不想每次都删除文件。

这里的正确解决方案是什么?我应该先尝试加载文件,然后用我的 xml 替换它的所有内容吗?

4

2 回答 2

0

您可以尝试写入xml文件

using (TextWriter writer = new StreamWriter(filePath)) { doc.Save(writer); writer.Close(); }

于 2013-06-11T21:17:57.883 回答
0

在您的问题中包含异常类型和消息可能会对您有所帮助。如果您收到 UnauthorizedAccessException,它们通常有两种形式:缺少权限和并发文件访问。

由于您可以通过托管文件访问调用(我假设您正在通过相同的实用程序和凭据执行)删除文件,因此可能值得在您尝试保存时查看哪些进程可能正在访问您的文件。如果有另一个进程打开或写入该位置(包括文本编辑器),或者如果另一个进程正在使用自定义权限分配写入文件(可能缺少“创建文件/写入数据”权限并包括“删除文件”特权),它可能会导致这种类型的异常。

如果您的程序是此文件的唯一使用者,并且您一次只执行一个线程,您可能需要进行健全性检查,您的文件从父文件夹继承了哪些权限。

于 2016-06-24T23:54:24.303 回答