C#XmlWriter.Create() - 访问路径被拒绝

时间:2012-09-23 18:00:57

标签: c#

我想将新的XML文件写入磁盘,但以下代码会出错。

static void Main(string[] args)
        {
            using (XmlWriter writer = XmlWriter.Create(@"C:\abc.xml"))
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("Employees");
                writer.WriteEndElement();
                writer.WriteEndDocument();
            }            

            Console.ReadKey();       
       }

有人可以帮我吗?

注意:abc.xml尚不存在。

4 个答案:

答案 0 :(得分:3)

显然,您无权访问C:。选择您有权访问的路径或以更高权限运行应用程序。

作为旁注,对于大多数情况,不建议再使用System.Xml,而是使用LINQ to XML(System.Xml.Linq):

new XElement("Employees").Save("abc.xml"); // and a path that you have access to.

答案 1 :(得分:2)

根据系统的不同,您需要管理员权限才能创建文件@C:\

以管理员身份运行VS instante或将代码更改为

 using (XmlWriter writer = XmlWriter.Create("abc.xml"))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("Employees");
            writer.WriteEndElement();
            writer.WriteEndDocument();
        }   

答案 2 :(得分:1)

如果没有管理员模式,您无法从VS将文件写入C:\。您需要在管理员模式下运行您的应用程序/ VS以在C:\中写入文件。或者您可以在C:\中创建一个文件夹并在该文件夹中写入文件。

<强> CODE

 using (XmlWriter writer = XmlWriter.Create(@"C:\folder\abc.xml"))
 {
           writer.WriteStartDocument();
           writer.WriteStartElement("Employees");
           writer.WriteEndElement();
           writer.WriteEndDocument();
  }

在上面的代码中,您不需要在管理模式下运行application / VS。

注意: C:\文件夹必须存在,否则会抛出错误。

如果C:\folder不存在,请在写入文件之前添加以下代码。

if (System.IO.Directory.Exists(@"C:\folder") == false)
{
    System.IO.Directory.CreateDirectory(@"C:\folder");
}

答案 3 :(得分:1)

不想死角,但我刚看到这篇文章,却遇到了同样的错误。

结果表明该文件夹已设置为:

  • 只读

这不允许C#写入解决方案中的任何文件。

要解决此问题,请转到:

  • 右键单击包含所有C#.sln文件的主文件夹
  • 转到属性
  • 在窗口的最底部将有一个名为:只读的检查(仅适用于文件夹中的文件)

这里是上述文件夹外观的链接: Properties

真的很蠢,但是容易忘记!