我在逐行读取文件中的文本时遇到问题。
System.IO.StreamReader file = new System.IO.StreamReader("ais.txt");
while ((line = file.ReadLine()) != null)
{
listBox1.Items.Add(line);
}
此代码仅从文件中读取最后一行并显示在列表框中。如何逐行阅读?
例如:读取一行,等待 1 秒,读取另一行,等待 1 秒……等等?
我在逐行读取文件中的文本时遇到问题。
System.IO.StreamReader file = new System.IO.StreamReader("ais.txt");
while ((line = file.ReadLine()) != null)
{
listBox1.Items.Add(line);
}
此代码仅从文件中读取最后一行并显示在列表框中。如何逐行阅读?
例如:读取一行,等待 1 秒,读取另一行,等待 1 秒……等等?
如果您想以一秒的延迟一次读取一行,您可以在表单中添加一个计时器来执行此操作(将其设置为 1000):
System.IO.StreamReader file = new System.IO.StreamReader("ais.txt");
String line;
private void timer1_Tick(object sender, EventArgs e)
{
if ((line = file.ReadLine()) != null)
{
listBox1.Items.Add(line);
}
else
{
timer1.Enabled = false;
file.Close();
}
}
您也可以一次阅读所有行,然后一次只显示一行,但我试图尽可能地接近您的代码。
await
让这很容易。我们可以循环遍历所有行并await Task.Delay
在继续之前异步等待一段时间,同时仍然不会阻塞 UI 线程。
public async Task DisplayLinesSlowly()
{
foreach (var line in File.ReadLines("ais.txt"))
{
listBox1.Items.Add(line);
await Task.Delay(1000);
}
}
你试过File.ReadAllLines吗?你可以这样做:
string[] lines = File.ReadAllLines(path);
foreach(string line in lines)
{
listBox1.Items.Add(line);
}
您可以读取所有行并保存到数组字符串
string[] file_lines = File.ReadAllLines("ais.txt");
然后逐行读取按钮单击或使用计时器等待1秒