Windows Phone C#从文本文件加载

时间:2013-07-08 23:29:47

标签: c# windows-phone isolatedstorage isolatedstoragefile

我的程序使用IsolatedStorageFile将4个不同文本框的内容保存为4个单独的文本文件。这工作正常,直到我以后必须加载它们。当我加载时,所有4个文本文件都被加载到第一个文本框中,其余3个文本文件被留空。

这是我用来保存文件的代码:

private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        defaultPicker.ItemsSource = new List<string>() { { box1.Text },   { box2.Text }, { box3.Text }, { box4.Text } };

        //Deletes any previous saved files

        IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
        storage.DeleteFile("ip-1.txt");
        storage.DeleteFile("ip-2.txt");
        storage.DeleteFile("ip-3.txt");
        storage.DeleteFile("ip-4.txt");

        // This saves users IP's into text files for later loading


        IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();
        StreamWriter Writer = new StreamWriter(new IsolatedStorageFileStream("ip-1.txt", FileMode.OpenOrCreate, fileStorage));
        Writer.WriteLine(box1.Text);

        new StreamWriter(new IsolatedStorageFileStream("ip-2.txt", FileMode.OpenOrCreate, fileStorage));
        Writer.WriteLine(box2.Text);

        new StreamWriter(new IsolatedStorageFileStream("ip-3.txt", FileMode.OpenOrCreate, fileStorage));
        Writer.WriteLine(box3.Text);

        new StreamWriter(new IsolatedStorageFileStream("ip-4.txt", FileMode.OpenOrCreate, fileStorage));
       Writer.WriteLine(box4.Text);

        Writer.Close();



    }

并稍后加载文件:

    private void Button_Click_4(object sender, RoutedEventArgs e)
    {

        // Loads IP's from text file or displays error message

        //First clear the boxes...

        box1.Text = "";
        box2.Text = "";
        box3.Text = "";
        box4.Text = "";

        //Load from text files...

        IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();
        StreamReader Reader = null;
        try
        {
            Reader = new StreamReader(new IsolatedStorageFileStream("ip-1.txt", FileMode.Open, fileStorage));
            string textFile = Reader.ReadToEnd();
            box1.Text = textFile;

        }
        catch
        {
        }



        IsolatedStorageFile.GetUserStoreForApplication();           
        try
        {
            Reader = new StreamReader(new IsolatedStorageFileStream("ip-2.txt", FileMode.Open, fileStorage));
            string textFile2 = Reader.ReadToEnd();
            box2.Text = textFile2;

        }
        catch
        {
        }



        IsolatedStorageFile.GetUserStoreForApplication();
        try
        {
            Reader = new StreamReader(new IsolatedStorageFileStream("ip-3.txt", FileMode.Open, fileStorage));
            string textFile3 = Reader.ReadToEnd();
            box3.Text = textFile3;

        }
        catch
        {
        }



        IsolatedStorageFile.GetUserStoreForApplication();
        try
        {
            Reader = new StreamReader(new IsolatedStorageFileStream("ip-4.txt", FileMode.Open, fileStorage));
            string textFile4 = Reader.ReadToEnd();
            box4.Text = textFile4;
            Reader.Close();

        }
        catch
        {
        }

        // To sync with ListPicker
        defaultPicker.ItemsSource = new List<string>() { { box1.Text },   { box2.Text }, { box3.Text }, { box4.Text } };
    }

对正确方向的任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

首先,我建议你停止吃所有异常。至少在调试模式下,在pragma中使用空catch块。

我会删除Reader的单个声明并为每个文件创建一个新声明:

try
{
    using (StreamReader reader = new StreamReader(new IsolatedStorageFileStream("ip-1.txt", FileMode.Open, fileStorage))) 
    {
        string textFile = reader.ReadToEnd();
        box1.Text = textFile;
    }
}

答案 1 :(得分:0)

您没有正确地写入这四个文件。您需要每次重新分配Writer

    StreamWriter Writer = new StreamWriter(new IsolatedStorageFileStream("ip-1.txt", FileMode.OpenOrCreate, fileStorage));
    Writer.WriteLine(box1.Text);

    Writer = new StreamWriter(new IsolatedStorageFileStream("ip-2.txt", FileMode.OpenOrCreate, fileStorage));
    Writer.WriteLine(box2.Text);

    Writer = new StreamWriter(new IsolatedStorageFileStream("ip-3.txt", FileMode.OpenOrCreate, fileStorage));
    Writer.WriteLine(box3.Text);

    Writer = new StreamWriter(new IsolatedStorageFileStream("ip-4.txt", FileMode.OpenOrCreate, fileStorage));
   Writer.WriteLine(box4.Text);

    Writer.Close();

将来你应该在catch块中有一些东西来显示任何捕获的异常。在这种情况下,它会告诉你其他三个文件因为它们不存在而无法加载。