0

私はディレクトリを持つアプリに取り組んでおり、Web から XML 経由で取得し、ローカル 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できますが、ファイルを開いてファイルに書き込むことさえできないようです(そうすれば、オフラインで利用できます)。これが、ペーストビンに入れられた実際のエラーです。これは直接発生しますIsolatedStorageFileStream file = isoStorage.OpenFile("Components/contacts.xml", FileMode.OpenOrCreate, FileAccess.Read);

どんな助けでも大歓迎です。

4

2 に答える 2

0

ファイルをダウンロードして保存するときは、再度読み取る前に必ずファイルを閉じてください。

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 に答える