Phone7, еще одна проблема IsolatedStorageFile - PullRequest
0 голосов
/ 29 июля 2011

Я хочу сохранить текст из текстового поля во внутреннее хранилище и загрузить его оттуда ...

Часть сохранения работает нормально.Но загрузка не работает, я уже пробовал много учебников.

private void button2_Click(object sender, RoutedEventArgs e)
    {
        //get selected FileName from listBox
        string selItem = listBox1.SelectedItem.ToString();
        IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
        if (selItem != null)
        {
           IsolatedStorageFileStream fileStream = store.OpenFile(selItem, FileMode.Open, FileAccess.Read);
            using (StreamReader sr = new StreamReader(fileStream))
            {
                String line = "";
                //Debug.WriteLine("ReadLine");
                if ((line = sr.ReadLine()) != null)
                {
                    //Debug.WriteLine("ReadLineText");
                    textBox1.Text = line;
                }
                sr.Close();
            }
            fileStream.Close();
        }
    }

Вместо:

if ((line = sr.ReadLine()) != null)
            {
                //Debug.WriteLine("ReadLineText");
                textBox1.Text = line;

Я пробовал много возможностей, таких как: textBox1.Text = sr.ReadLine ();и так далее.

Любопытно, что код имеет следующий вид: если я, например, введу:

IsolatedStorageFileStream fileStream = store.OpenFile("text0.txt", FileMode.Open, FileAccess.Read);

Он отлично работает для одного файла text0.txt.

Было бы действительно здорово, если бы кто-нибудь дал мне несколько советов по исправлению кода.

Заранее спасибо ..

Ответы [ 2 ]

1 голос
/ 30 июля 2011

К вашему сведению: не пытайтесь проводить тестирование без телефона, если хотите работать с изолированным хранилищем.

это наконец работает для меня:

private void button2_Click(object sender, RoutedEventArgs e)
    {
        //get fileName
        string filename = listBox1.SelectedItem.ToString();

        try
        {

            IsolatedStorageFileStream stream = new IsolatedStorageFileStream(filename, FileMode.OpenOrCreate, store);  // loads from isolated storage
            //Debug.WriteLine(stream.CanRead);
            StreamReader sr = new StreamReader(stream);
            String lines = sr.ReadToEnd().ToString();
            if (lines != null)
            {
                textBox1.Text = lines;
            }
            stream.Close();
            sr.Close();
        }
        catch (Exception)
        {

            throw;
        }
      }
}

Может быть, вы видите, что я убил использование (..) и вставил небольшую проверку на "Null". Я думаю, что основной причиной было отсутствие телефона для проверки кода.

Большое спасибо, действительно: -)))

1 голос
/ 29 июля 2011

вот как я открываю поток ISF

IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream stream = new IsolatedStorageFileStream(filename, FileMode.OpenOrCreate, isf);  // loads from isolated storage
...