2012-07-19 112 views
0

我有寫入到XML文件,放在我的應用程序文件夾(Windows 8,metro樣式)的問題。當我試圖以讀/寫模式打開文件時,我得到了未授權的AccessException。我做了很多研究,但仍然沒有。我試過這個解決方案:Windows 8 xml文件寫入

var sf = await Package.Current.InstalledLocation.GetFileAsync(@"data.xml"); 
     XmlDocument xmlDoc; 
     using (var stream = await sf.OpenAsync(FileAccessMode.ReadWrite)) 
     { 
      xmlDoc = await XmlDocument.LoadFromFileAsync(sf); 
      XmlElement root = xmlDoc.DocumentElement; 
      XmlElement xe = xmlDoc.CreateElement("debt"); 

      XmlElement id = xmlDoc.CreateElement("Id"); 
      id.InnerText = Guid.NewGuid().ToString(); 

      XmlElement name = xmlDoc.CreateElement("Name"); 
      name.InnerText = d.Name; 

      XmlElement surname = xmlDoc.CreateElement("Surname"); 
      surname.InnerText = d.Surname; 

      xe.AppendChild(id); 
      xe.AppendChild(name); 
      xe.AppendChild(surname); 

      root.AppendChild(xe); 
     } 
     if (xmlDoc != null) 
      await xmlDoc.SaveToFileAsync(sf); 

但是我在開放流的行中又出現異常。

THX對您有所幫助

+0

Package.Current.InstalledLocation的值是什麼。 您是否曾嘗試以管理員身份運行它(的Visual Studio)?即使這可能不是一個解決方案,它可能是一個指標,這是什麼錯誤。 – 2012-07-19 08:20:21

回答

2

Package.Current.InstalledLocation.GetFileAsync代表在您的應用程序安裝這是你不能直接將文件寫入到一個區域。使用以下

Windows.ApplicationModel.Package.Current.InstalledLocation

Windows.Storage.ApplicationData.Current.LocalFolder.Path

我使用的是前者,它工作正常,請參閱http://metrorssreader.codeplex.com/SourceControl/changeset/view/18082#263004