用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());
        }  
    }

用StreamReader逐行读取文件

如果函数是事件处理程序(例如按钮按下),则应该仅使用async void。一般来说,您应该使用async Task

将方法签名从void更改为Task:

public async Task read(string fileName)

然后从你的调用代码,await it:

await yourclass.read("c:''my_filename.txt");