如何读取多个文本文件并将其存储在TextBox中?

时间:2011-11-22 14:40:16

标签: c# file text

我已经打了个精神墙。基本上,这段代码应该执行并收集我在文件夹中的所有文本文件(并最终每10秒更新一次文本框。) 目前,它只会同时从一个或两个文件中提取文本,这就是它。它也不会更新此文本框3。我想知道是否有人对于为什么会这样做有任何想法?

由于我已经使用这段代码几个小时,我不知道我有多清楚。如果您对此有任何疑问,请随时提出。谢谢你的期待。

public void read()
{
    string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt",
                                     SearchOption.AllDirectories);

    foreach (string file in filePaths)
    {
        TextReader objstream = new StreamReader(file);

        textBox3.Text = objstream.ReadToEnd();

        objstream.Close();

        textBox3.Select(textBox3.Text.Length, 0);
        textBox3.ScrollToCaret(); 

        break;
    }
}

3 个答案:

答案 0 :(得分:2)

如果你真的不需要插入这么多流,我只需要使用System.IO.File静态类上的方法来读取并返回所有文本。使用它和AppendText基本上可以将它组合成一个语句。我建议不要在文件读取上放置一些异常检查。

string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt", SearchOption.AllDirectories);  
foreach (string file in filePaths)
  textBox3.AppendText(System.IO.File.ReadAllText(file));

答案 1 :(得分:1)

还可以尝试

textBox3.AppendText(objstream.ReadToEnd());

这里要记住的一件事是文件编码。如果文件编码不是UTF-8,则它可能在文本框和文本编辑器中显示不同。

希望这有助于

答案 2 :(得分:0)

而不是

textBox3.Text = objstream.ReadToEnd(); 

textBox3.Text += objstream.ReadToEnd(); 

编辑1:如果要刷新此文本框,请不要忘记在刷新之前清除其文本。 (textBox3.Text = ""会这样做)。你也可以把这一行放在read()的开头。

编辑2:删除for ... each循环中的break;行。