0

我正在开发一个具有目录的应用程序,它通过 XML 从 Web 将其拉入,将其写入本地 XML 文件,然后从那里读取它以显示联系人。我遇到了我的 IsolatedStorageFileStream 无法正常工作的问题,因为不允许该操作。这是我的代码:

IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForApplication();
        IsolatedStorageFileStream file = isoStorage.OpenFile("Components/contacts.xml", FileMode.OpenOrCreate, FileAccess.Read);
        var reader = new StreamReader(file);
        XElement appDataXml = XElement.Load(reader);
        lstContacts.ItemsSource = from contact in appDataXml.Descendants("contact")
                                  select new ContactItem
                                  {
                                      ImageSource = contact.Element("Image").Value,
                                      FName = contact.Element("FName").Value,
                                      LName = contact.Element("LName").Value,
                                      Extension = contact.Element("Extension").Value,
                                      Email = contact.Element("Email").Value,
                                      Cell = contact.Element("Cell").Value,
                                      Title = contact.Element("TitleName").Value,
                                      Dept = contact.Element("deptName").Value,
                                      Office = contact.Element("officename").Value,
                                      ID = contact.Element("ID").Value
                                  };

我可以直接从互联网上提取它并将其放入lstContacts,但我似乎什至无法打开文件将其写入文件(这样它就可以离线使用)。这是我放入 pastebin 的实际错误。这直接发生在IsolatedStorageFileStream file = isoStorage.OpenFile("Components/contacts.xml", FileMode.OpenOrCreate, FileAccess.Read);

任何帮助是极大的赞赏。

4

2 回答 2

0

下载并保存文件时,请确保在尝试再次读取之前关闭文件。

您应该在 using 块中包装 File The Readers/Writers,因为这是一种快速且安全的方法(请参阅下面的 MSDN 示例) http://msdn.microsoft.com/en-us/library/aa664736(v=vs. 71).aspx

using System;
using System.IO;
class Test
{
   static void Main() {
      using (TextWriter w = File.CreateText("log.txt")) {
         w.WriteLine("This is line one");
         w.WriteLine("This is line two");
      }
      using (TextReader r = File.OpenText("log.txt")) {
         string s;
         while ((s = r.ReadLine()) != null) {
            Console.WriteLine(s);
         }
      }
   }

}

于 2012-05-24T20:23:05.193 回答
0

我发现了这个问题。问题是我在运行它之前已经在我的系统上创建了文件,但它不喜欢那样。

于 2012-05-25T12:13:39.613 回答