【问题标题】:c# ReadLine doesn't read the whole filec# ReadLine 不读取整个文件
【发布时间】:2012-04-22 16:58:52
【问题描述】:

我使用此代码读取文件中的每一行,但它只读取(或者它只显示文件的最后一行)。当我在记事本中打开文件时,我可以看到不止一行。 这是我正在使用的代码:

 using (StreamReader sr = File.OpenText(newPath))
        {
            String input;
            while ((input = sr.ReadLine()) != null)
            {

                TextBox1.Text = input;  

            }

【问题讨论】:

  • 考虑致电File.ReadAllText
  • 没有理由对此投反对票。这是一个合理的问题,表明该人正在做自己的工作并试图自己解决。

标签: c# readline


【解决方案1】:

while 循环的每次迭代都将 TextBox1.Text 的前一个值替换为它已读取的行,因此当循环结束时,您只需使用文件中的最后一行更新 Text 属性。

考虑使用File.ReadAllText() 代替逐行读取。

TextBox1.Text = File.ReadAllText(newPath);

【讨论】:

  • 这是要走的路。无需将文本分成多行,然后将所有行再次组合成一个文本。
【解决方案2】:

你需要使用:

TextBox1.Text += input;

否则描述的行为是正确的

最终您可以将示例更改为:

String input;
String target = String.Empty;
try {
using (StreamReader sr = File.OpenText(newPath)) 
{ 
    while ((input = sr.ReadLine()) != null) 
    { 
        target += input;   
    }
}
TextBox1.Text = target;
} catch { ... }

最好将阅读过程提取到一个单独的方法中..

【讨论】:

    【解决方案3】:

    TextBox1.Text = input

    这会覆盖上一行。

    【讨论】:

      【解决方案4】:

      您的代码几乎是正确的,但是行:

        TextBox1.Text = input;
      

      用“input”覆盖 TextBox1,替换之前的内容。相反,您正在寻找附加文本。所以,你想要:

      TextBox1.Text += input + "\n";
      

      这会将每一行“添加”到文本框,并在每一行之间添加一个新行,以替换您在使用 readLine() 抓取一行时删除的行。

      【讨论】:

        【解决方案5】:

        如果你想单独使用每一行数据,你需要一个额外的字符串变量来分配每一行,因为对于你迭代的文件中的每一行,你都会覆盖“输入”,留下它的值最后一行。

        【讨论】:

        • 我这样做了,现在它正在工作 string CR = Environment.NewLine; TextBox1.Text += 输入 + CR;
        【解决方案6】:

        出于几个原因,我更喜欢字符串生成器。使用字符串生成器的主要优点是操作字符串所需的资源更少。

        StringBuilder 的用法如下:

         StringBuilder builder = new StringBuilder();
         using (StreamReader sr = File.OpenText(newPath)) {
             while ((input = sr.ReadLine()) != null) {
                 builder.AppendLine(input);
             }
         }
         TextBox1.Text = builder.ToString();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-04
          • 1970-01-01
          • 1970-01-01
          • 2023-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多