Windows Phone C# - загрузка из текстовых файлов

Моя программа сохраняет содержимое 4 разных текстовых полей в 4 отдельных текстовых файла с помощью IsolatedStorageFile. Это работает нормально, пока мне не придется загружать их позже. Когда я загружаюсь, все 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 } };
    }

Любая помощь в правильном направлении будет оценена по достоинству.


person user2559105    schedule 08.07.2013    source источник
comment
Вы просмотрели текстовые файлы и убедились, что их содержимое соответствует ожиданиям?   -  person Justin R.    schedule 09.07.2013
comment
Вы должны добавить по крайней мере окно сообщений в свой блок catch, чтобы вы могли видеть, возможно, другие три просто выдают ошибку. Вы уверены, что все четыре файла действительно создаются?   -  person cost    schedule 09.07.2013


Ответы (2)


Вы неправильно пишете в четыре файла. Вам нужно каждый раз переназначать 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 для отображения любых перехваченных исключений. В этом случае он сказал бы вам, что три других файла не могут быть загружены, потому что они не существуют.

person cost    schedule 08.07.2013
comment
Спасибо за помощь и совет. - person user2559105; 09.07.2013

Во-первых, я предлагаю вам перестать есть все исключения. По крайней мере, в режиме отладки используйте пустые блоки catch в прагме.

Я бы отказался от единственного объявления Reader и создал новый для каждого файла:

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