2012-09-23 66 views
2

我想寫一個新的XML文件到磁盤,但是下面的代碼給出了一個錯誤。C#XmlWriter.Create() - 訪問被拒絕的路徑

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不存在。

+0

你確定錯誤是路徑被拒絕嗎?因爲在我的電腦中我收到了「所需的特權不是由客戶持有」。錯誤。 –

回答

3

顯然,你沒有權利訪問C:。選擇您有權訪問的路徑或以更高權限運行應用程序。

作爲一個側面說明,對於大多數情況下,我們不推薦使用System.Xml了,使用LINQ到XML(System.Xml.Linq)代替:

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

根據不同的系統,你需要管理員權限才能創建文件@ C:\

運行VS instante作爲管理員或改變代碼

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

只是爲了解釋上面的代碼,不同之處在於在這種情況下,在與YourProgram.exe(bin/Debug或bin/Release)相同的目錄中創建「abc.xml」文件,該文件可由運行VS –

1

無法寫入文件到C:\從沒有管理員模式的VS。您需要在Admin模式下運行您的應用程序/ VS以在C:\中寫入文件。或者您可以在C:\中創建一個文件夾並在該文件夾中寫入文件。

CODE

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

在上面的代碼中你就不需要在管理模式下運行的應用程序/ VS。

注意: C:\文件夾必須存在,否則會引發錯誤。

如果C:\folder不存在,請在寫入文件前添加以下代碼。

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

這不是事實:沒有管理員權限,上述代碼無法工作。 – Adam

+0

在我的電腦上工作。請先從您身邊查看。 –

+0

只有當'文件夾'已經存在時,你的代碼才能正常工作,它不會......我在*評論之前嘗試了*。 – Adam