Как читать отдельные строки текста из изолированного хранилища? - PullRequest
0 голосов
/ 10 июля 2011

(РЕДАКТИРОВАНИЕ)

Мои коды не читают текстовый файл.Видимо; у, когда я хочу прочитать файл, они дали мне «Файл не найден!»окно сообщения, которое находится в цикле if else, указывающее, что код в цикле if не работает.

        private void OnSaveFile()
        {
            if (!string.IsNullOrEmpty(this.FileName))
            {
                using (var store = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    if (store.FileExists(FileName))
                        store.DeleteFile(FileName);

                    using (var fileStream = store.OpenFile(FileName, FileMode.Create, FileAccess.Write))
                    {
                        using (var writer = new StreamWriter(fileStream))
                        {

                            writer.WriteLine(FileName);
                            writer.WriteLine(FileText1);
                            writer.WriteLine(FileText2);


                        }
                    }
                }
            }
        }

        private void OnReadSelected()
        {
            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (store.FileExists(FileName))
                {
                    using (var fileStream = store.OpenFile(FileName, FileMode.Open, FileAccess.Read))
                    {
                        using (var reader = new StreamReader(fileStream))
                        {
                            FileName = reader.ReadLine();
                            FileText1 = reader.ReadLine();
                            FileText2 = reader.ReadLine();
                        }
                    }
                }
                else
                {
                    MessageBox.Show("File not found!");
                }
            }
        }

CreateTextPage:

 private void Button_Click(object sender, RoutedEventArgs e)
        {
            AddFileModel model = this.LayoutRoot.DataContext as AddFileModel;
            model.SaveFile.Execute(null);
            model.FileName = string.Empty;

            model.FileText1 = string.Empty;
            model.FileText2 = string.Empty;


            MessageBox.Show("File saved successfully");

            NavigationService.Navigate(new Uri("/CompleteQuestionPage.xaml", UriKind.Relative));

        }

ReadFilePage:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        AddFileModel model = this.LayoutRoot.DataContext as AddFileModel;
        model.ReadSelectedFiles.Execute(null);

    }

1 Ответ

1 голос
/ 10 июля 2011

В вашем методе OnSaveFile похоже, что вы сохраняете данные в файл с именем "myfile.txt".В OnReadSelected вы открываете файл, используя свойство «Имя файла».Для чего установлено «Имя файла»?Потому что, если для него не установлено значение «myfile.txt», возможно, именно поэтому вы видите «Файл не найден».

Попробуйте изменить

using (var fileStream = store.OpenFile("myfile.txt", FileMode.Create, FileAccess.Write))

на

using (var fileStream = store.OpenFile(Filename, FileMode.Create, FileAccess.Write))

Кроме того, измените

using (var reader = new StreamReader(fileStream))

FileName = reader.ReadLine();
FileText1 = reader.ReadLine();
FileText2 = reader.ReadLine();

на

using (var reader = new StreamReader(fileStream))
{  
   FileName = reader.ReadLine();
   FileText1 = reader.ReadLine();
   FileText2 = reader.ReadLine();
}

, чтобы получить код для компиляции.

ОБНОВЛЕНИЕ:

Хорошо, вернотеперь в вашем обработчике нажатия кнопок вы делаете это:

model.SaveFile.Execute(null);
model.FileName = string.Empty;

Вы устанавливаете значение 'Filename' в качестве пустой строки;позже вы снова вызываете OnReadSelected, которое использует значение в «Filename».Поскольку для него задана пустая строка, я думаю, именно поэтому вы видите «Файл не найден».Что произойдет, если вы удалите строку

model.FileName = string.Empty;

?Вы все еще получаете «Файл не найден»?

...