我已经打了个精神墙。基本上,这段代码应该执行并收集我在文件夹中的所有文本文件(并最终每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;
}
}
答案 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;
行。