Создать и сохранить несколько списков текста в изолированном хранилище - PullRequest
1 голос
/ 12 мая 2011

Как мне создать более одного списка текстовых данных и сохранить его в изолированном хранилище?Мне нужно также извлечь и отобразить другой сохраненный список.

Я делаю приложение, подобное списку напитков, где пользователь может создать список из нескольких напитков, содержащий много разных видов напитков.

Я могу толькосоздать и сохранить один список текста напитка на данный момент.Если бы я снова добавил текст напитка в список и сохранил его, список будет перезаписан последним другим текстом напитка.


// Сохранить список текста напитка

    private void addListBtn_Click(object sender, RoutedEventArgs e)
    {

        IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
        storage.CreateDirectory("ListFolder");

        StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("ListFolder\\savedList.txt", FileMode.OpenOrCreate, storage));
        for (int i = 0; i < (Application.Current as App).userDrinksList.Count; i++)
        {
            String drink = (Application.Current as App).userDrinksList[i].ToString();
            writeFile.WriteLine(drink.ToString());
        }
        writeFile.Close();

        MessageBox.Show("List added into favourite list.");
     }

// Отображение сохраненных списков

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();

        StreamReader readFile = null;
        {
            readFile = new StreamReader(new IsolatedStorageFileStream("ListFolder\\savedList.txt", FileMode.Open, storage));

            listNumberListBox.Items.Add(readFile.ReadToEnd());
            readFile.Close();
        }
    }

Ответы [ 2 ]

0 голосов
/ 12 мая 2011

Ваш метод addListBtn_Click предполагает, что он может найти список напитков в элементе userDrinksList вашего экземпляра приложения, однако ваш метод PhoneApplicationPage_Loaded не заполняет этот элемент.

В вашем методе PhoneApplicationPage_Loaded вы можете сделать:

    using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
    using(var stream = storage.OpenFile("ListFolder\\savedList.txt", FileMode.Open))
    using(StreamReader readFile = new StreamReader(stream))
    {
        for (string line = readFile.ReadLine(); line != null; line = readFile.ReadLine())
        {
            listNumberListBox.Items.Add(line);
            ((App) Application.Current).userDrinksList.Add(line)
        }
    }

«Использование» гарантирует, что ресурсы правильно закрыты / расположены, поэтому вам не нужно явно закрывать.Вы читали в полном содержании - вам нужно читать его построчно.

0 голосов
/ 12 мая 2011

Вы сохраняете его как saveList.txt.Вам необходимо сохранить каждый список в виде отдельного файла.например, list1.txt, list2.txt и т. д.

Возможно, вам также нужен список списков, чтобы вы знали, какой файл = какой список.

...