C#从文件到列表框逐行读取

时间:2014-01-28 18:32:17

标签: c# readline line-by-line

我在逐行从文件中读取文本时遇到问题。

System.IO.StreamReader file = new System.IO.StreamReader("ais.txt");
while ((line = file.ReadLine()) != null)
{
    listBox1.Items.Add(line);
}

此代码仅读取文件的最后一行并显示在列表框中。我怎样逐行阅读?

例如:读一行,等待1秒,读另一行,等待1秒......等等。

4 个答案:

答案 0 :(得分: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();
    }
}

你也可以一次阅读所有行,只需一次显示一行,但我试图尽可能接近你的代码。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你试过File.ReadAllLines吗?你可以这样做:

string[] lines = File.ReadAllLines(path);

foreach(string line in lines)
{
   listBox1.Items.Add(line);
}

答案 3 :(得分:0)

您可以读取所有行并保存到数组字符串

  string[] file_lines = File.ReadAllLines("ais.txt");

然后通过按钮单击逐行读取或使用计时器等待1秒