如何从隔离存储中读取文本的各行?

时间:2011-07-10 06:20:36

标签: c# windows-phone-7 textbox isolatedstorage

(修改)

我的代码无法读取文本文件。显然; y,当我想阅读文件时,他们给了我一个“找不到文件!”它位于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 个答案:

答案 0 :(得分:1)

在OnSaveFile方法中,看起来您将数据保存到名为“myfile.txt”的文件中。在OnReadSelected中,您使用'Filename'属性打开文件。什么是'文件名'设置为?因为如果它没有设置为“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;

?你还得到“找不到文件”吗?