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

C#XmlWriter.Create()-拒绝访问路径,c#,C#,我想将一个新的XML文件写入磁盘,但下面的代码给出了一个错误 static void Main(string[] args) { using (XmlWriter writer = XmlWriter.Create(@"C:\abc.xml")) { writer.WriteStartDocument(); writer.WriteStartElement("Emplo

我想将一个新的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不存在。

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

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


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

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

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

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

代码

 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");
}

我不想发帖,但我刚看到这篇帖子,我也犯了同样的错误

原来文件夹已设置为:

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

要解决此问题,请转到:

  • 右键单击包含所有C#.sln文件的主文件夹
  • 转到属性
  • 在窗口的最底部将有一个名为“只读”的复选框(仅适用于文件夹中的文件)
以下是指向上述文件夹的链接:


真的很愚蠢,但有些东西很容易忘记

事实并非如此:没有管理员权限,上述代码无法工作。只有当
文件夹
已经存在时,您的代码才能工作,但它不。。。我在评论之前确实尝试过。您可以检查以下步骤:只需打开一个记事本文件,并尝试将其保存在C:\中,您将收到错误消息。现在在C:\中创建一个文件夹,并尝试保存记事本文件。您可以成功保存它,因为您无法在C:\中直接保存文件,但您可以在C:\中创建文件夹(当前登录用户对文件夹有权限(写入和读取))后保存文件。是的,显然文件夹必须在那里。我不是说保存文件时不带文件夹。我刚刚得到了一个解决方案来保存文件C:\而不在管理模式下运行VS/Application。@codesparkle认为否决票有点苛刻。我只是给出了另一种解决方案。我在回答中已经提到在C:\中创建文件夹,然后保存文件。您确定错误是拒绝访问路径吗?因为在我的电脑中,我收到了“客户端不拥有所需的权限”错误。为了解释上述代码,不同之处在于,在本例中,“abc.xml”文件创建在与YourProgram.exe(bin/Debug或bin/Release)相同的目录中,可由运行VS
if (System.IO.Directory.Exists(@"C:\folder") == false)
{
    System.IO.Directory.CreateDirectory(@"C:\folder");
}