试图从文件创建字符串

时间:2015-04-22 20:22:16

标签: c#

目前正在尝试从文本文件创建一个字符串,但是它们似乎是一个错误,阻止了流阅读器正确读取文本文件。

    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;

    }

代码执行时输出的输出文本框为空,但是如果星号之间的代码块被注释掉,输出文本框显然会显示鸡的测试短语。因此,我很确定这个特定的块有问题,但我似乎无法弄清楚是什么。 提前谢谢。

2 个答案:

答案 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可能会无限期地阻塞,因为它没有达到目的,   应该避免。