2 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
目前,您正在迭代一行中的每個(gè)字符。如果您想迭代文件中的每一行,您需要類似以下內(nèi)容:
using (var reader = File.OpenText(path))
{
string line;
while ((line = await reader.ReadLineAsync()) != null)
{
// Use the line here
}
}
請(qǐng)注意,當(dāng)前您將每一行附加到checkedTb.Text,沒有換行符,因此您最終將獲得文件中的所有文本,但在一行中。如果這不是您想要的,您需要準(zhǔn)確地弄清楚您想要什么,以便做出適當(dāng)?shù)母淖儭?/p>
目前,在異步代碼中使用foreach循環(huán)(而不是循環(huán))比較棘手,但在 C# 8 中會(huì)變得更容易。您需要返回一個(gè) 的東西,如果框架不提供它,您可以自己編寫它。(我希望在某個(gè)時(shí)候有一個(gè)方法。)如果您愿意一次性閱讀整個(gè)文件,那么已經(jīng)有一個(gè)方法- 返回一個(gè). 您可以將其用作:whileIAsyncEnumerable<string>File.ReadLinesAsyncFile.ReadAllLinesAsyncTask<string[]>
var lines = await File.ReadAllLinesAsync(path);
foreach (var line in lines)
{
...
}
但是,如果文件非常大,那么在讀取文件時(shí)顯示進(jìn)度方面可能不是您想要的。

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用 reader.ReadToEndAsync 會(huì)更精確,您可以獲得文件的所有內(nèi)容,然后您可以迭代每一行
public static async void Click()
{
StreamReader reader = new StreamReader(@"D:\Bhushan\a.txt");
var fileContent = await reader.ReadToEndAsync();
}
- 2 回答
- 0 關(guān)注
- 166 瀏覽
添加回答
舉報(bào)