创建多个文本列表并将其保存到独立存储中

时间:2011-05-12 02:15:46

标签: list windows-phone-7 save 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();
        }
    }

2 个答案:

答案 0 :(得分:0)

您将其另存为savedList.txt。您需要将每个列表另存为单独的文件。例如list1.txt,list2.txt等。

也许您还需要一个列表列表,以便您知道哪个文件=哪个列表。

答案 1 :(得分:0)

您的addListBtn_Click方法假设它可以在Application实例的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)
        }
    }

'使用'确保资源正确关闭/处置,因此您无需显式关闭。您正在阅读完整的内容 - 您需要逐行阅读。