用StreamReader逐行读取文件
本文关键字:文件 读取 逐行 StreamReader | 更新日期: 2023-09-27 18:05:21
我正试图在Windows 8 c#文件中逐行读取一个简单的文本文件。我尝试了许多解决方案,但都不起作用。有时文件被读取,有时不被读取(类是空的,只有null)。如果程序正在运行,它永远不会工作,但当我设置一个调试器并使用它逐行运行时,有时它会工作。为什么呢?这是来源:
public async void read(string fileName)
{
string File = Path.Combine(Package.Current.InstalledLocation.Path, "myfolder", fileName);
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(Path.GetDirectoryName(File));
Stream s = await folder.OpenStreamForReadAsync(Path.GetFileName(File));
StreamReader streamReader = new StreamReader(s);
myClass.name = streamReader.ReadLine();
myClass.desc = streamReader.ReadLine();
myClass.number = int.Parse(streamReader.ReadLine());
myClass.house = new House[myClass.number];
for (int i = 0; i < myClass.number; i++)
{
myClass.house[i] = new House();
myClass.house[i].name = streamReader.ReadLine();
myClass.house[i].size = double.Parse(streamReader.ReadLine());
}
}
如果函数是事件处理程序(例如按钮按下),则应该仅使用async void
。一般来说,您应该使用async Task
。
将方法签名从void
更改为Task
:
public async Task read(string fileName)
然后从你的调用代码,await
it:
await yourclass.read("c:''my_filename.txt");