Создайте и сохраните несколько списков текста в изолированном хранилище

#list #windows-phone-7 #save #isolatedstorage

#Список #windows-phone-7 #Сохранить #isolatedstorage

Вопрос:

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

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

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


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

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

Ответ №1:

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

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

Комментарии:

1. Есть ли какой-либо более простой способ сохранить несколько списков в изолированном хранилище? Как мне создать список списков, поскольку я действительно не знаю, сколько списков нужно пользователю. Нужен ли мне цикл for или что-то в этомроде? Спасибо!

2. Создайте класс с именем childList. У этого будет свойство List<String> для хранения списка напитков. Создайте класс под названием masterList. У этого будет свойство List<Дочерний список> для хранения списка списков. Сериализуйте основной список в изолированное хранилище.

Ответ №2:

Ваш метод 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)
        }
    }
  

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