2 回答
![?](http://img1.sycdn.imooc.com/54584ee0000179f302200220-100-100.jpg)
TA贡献1906条经验 获得超10个赞
目前,您正在迭代一行中的每个字符。如果您想迭代文件中的每一行,您需要类似以下内容:
using (var reader = File.OpenText(path))
{
string line;
while ((line = await reader.ReadLineAsync()) != null)
{
// Use the line here
}
}
请注意,当前您将每一行附加到checkedTb.Text,没有换行符,因此您最终将获得文件中的所有文本,但在一行中。如果这不是您想要的,您需要准确地弄清楚您想要什么,以便做出适当的改变。
目前,在异步代码中使用foreach循环(而不是循环)比较棘手,但在 C# 8 中会变得更容易。您需要返回一个 的东西,如果框架不提供它,您可以自己编写它。(我希望在某个时候有一个方法。)如果您愿意一次性阅读整个文件,那么已经有一个方法- 返回一个. 您可以将其用作:whileIAsyncEnumerable<string>File.ReadLinesAsyncFile.ReadAllLinesAsyncTask<string[]>
var lines = await File.ReadAllLinesAsync(path);
foreach (var line in lines)
{
...
}
但是,如果文件非常大,那么在读取文件时显示进度方面可能不是您想要的。
![?](http://img1.sycdn.imooc.com/5333a0aa000121d702000200-100-100.jpg)
TA贡献1796条经验 获得超4个赞
使用 reader.ReadToEndAsync 会更精确,您可以获得文件的所有内容,然后您可以迭代每一行
public static async void Click()
{
StreamReader reader = new StreamReader(@"D:\Bhushan\a.txt");
var fileContent = await reader.ReadToEndAsync();
}
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报