C# 如何从独立存储器中读取文本的各行?
(编辑) 我的代码不读取文本文件。显然的y、 当我想读取文件时,他们给了我一个“未找到文件!”消息框,它位于if-else循环中,表示if循环中的代码不起作用C# 如何从独立存储器中读取文本的各行?,c#,windows-phone-7,textbox,isolatedstorage,C#,Windows Phone 7,Textbox,Isolatedstorage,(编辑) 我的代码不读取文本文件。显然的y、 当我想读取文件时,他们给了我一个“未找到文件!”消息框,它位于if-else循环中,表示if循环中的代码不起作用 private void OnSaveFile() { if (!string.IsNullOrEmpty(this.FileName)) { using (var store = IsolatedStorageFile.Get
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);
}
在OnSaveFile方法中,看起来您正在将数据保存到名为“myfile.txt”的文件中。在OnReadSelected中,您正在使用“文件名”属性打开文件。“文件名”设置为什么?因为如果它没有设置为“myfile.txt”,那么这可能就是您看到“未找到文件”的原因 试着改变
using (var fileStream = store.OpenFile("myfile.txt", FileMode.Create, FileAccess.Write))
到
还有,改变
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;
??您是否仍然得到“未找到文件”?您发布的代码甚至不会编译-
reader
将超出第二次ReadLine
调用的范围,因为未在内部using
语句中使用大括号。请发布失败的实际代码。@Jon Skeet-对不起,我不明白你的意思。然而,我确实给读者带来了一些错误。他们说,在目前的环境下,读者并不存在。有人告诉我,如果我对齐reader.ReadLine();这样,它将允许在不同的文本框中显示文本,而不是在一个文本框中显示字符串。@Jon Skeet谢谢,我终于知道我缺少什么了。尽管如此,我还是无法读取该文件,因为它仍然向我提供FileNot Found messagebox。但这表明,您之前提供的代码与您首次获得异常时的代码不同。这真的是你的密码吗?如果您使用调试器,可能会引发异常-该异常的详细信息是什么?抱歉,我真的无法继续。我试着为孩子们准备早餐,同时做101件其他事情(否则我早就拿着这个聊天了)。我强烈建议你阅读并重写你的问题,这样你就能清楚地看到你所看到的。。。目前情况并非如此。@E.Z.-顺便说一句,我有一个错误,他们说上下文中不存在reader。谢谢你指出这一点out@lala-请参见上面Jon Skeet的评论-您缺少一组围绕“using(var reader=new StreamReader(fileStream))”的大括号。这就是为什么您会看到“reader不存在”-我仍然会收到“File not Found!”消息框。您如何调用您的方法?我刚刚试着调用“OnSaveFile”和“OnReadSelected”,效果很好。-你介意我给你发送应用程序并帮我检查一下吗?我发誓,这真是一团糟。这是jsut代码的一小部分。现在我真的不知道该找谁。
model.SaveFile.Execute(null);
model.FileName = string.Empty;
model.FileName = string.Empty;