目前正在尝试从文本文件创建一个字符串,但是它们似乎是一个错误,阻止了流阅读器正确读取文本文件。
private string testString = "Cheese";
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog() != DialogResult.Cancel)
{
fileName = openFileDialog.FileName;
LoadFile();
}
}
private void LoadFile()
{
String lineFromFile = "Chicken";
*StringBuilder RawFileInput = new StringBuilder();
using (StreamReader reader = new StreamReader(fileName))
{
while ((lineFromFile = reader.ReadLine()) != null)
{
RawFileInput.AppendLine(lineFromFile);
}
}*
testString = lineFromFile;
testTB.Text = testString;
}
代码执行时输出的输出文本框为空,但是如果星号之间的代码块被注释掉,输出文本框显然会显示鸡的测试短语。因此,我很确定这个特定的块有问题,但我似乎无法弄清楚是什么。 提前谢谢。
答案 0 :(得分:1)
如果我理解您的代码,您正在尝试使用文件中的文本设置testTB.Text。考虑到这一点,不应该是你的最后一行:
testString = RawFileInput.ToString();
testTB.Text = testString;
您可以在不需要StringBuilder的情况下获得相同的结果,用此行替换整个LoadFile方法:
testTB.Text = File.ReadAllText(fileName);
答案 1 :(得分:0)
您应该能够完整地阅读文档,如下所示:
var builder = new StringBuilder();
using(var reader = new StreamReader(path))
builder.Append(reader.ReadToEnd());
这将是理想的,因为它比ReadAllText
更具性能。
当您需要读取所有输入时,ReadToEnd效果最佳 当前位置到流的末尾。如果需要更多控制 从流中读取多少个字符,使用 读取(Char [],Int32,Int32)方法重载,这通常会导致 更好的性能。 ReadToEnd假定流知道它何时 已经走到了尽头。用于服务器的交互式协议 仅在您提出数据并且未关闭连接时发送数据, ReadToEnd可能会无限期地阻塞,因为它没有达到目的, 应该避免。