0

我在写入放置在我的应用程序文件夹(Windows 8,metro 风格)中的 xml 文件时遇到问题。当我尝试以读/写模式打开文件时,我得到了 Unauthorized AccessException。我做了很多研究,但仍然一无所获。我试过这个解决方案:

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

但是在我打开流的地方再次发生异常。

谢谢你的帮助

4

1 回答 1

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

于 2012-07-19T08:52:53.103 回答