【问题标题】:C# StreamReader reading from textfile missing the first lineC# StreamReader 从文本文件中读取缺少第一行
【发布时间】:2013-06-26 01:25:00
【问题描述】:

我的 streamReader 正在从特定位置读取我的文本文件,但它只读取 9 行而不是 10 行,文本文件由 10 行组成,这里出了什么问题?它省略了第一行,仅显示其余 9 行。

这是我的代码:

  using (StreamReader reader = File.OpenText(Server.MapPath(@daoWordPuzzle.GetfileURL())))
       {
           foreach (var line in reader.ReadLine())
           {
               Response.Write(reader.ReadLine() + " <br />");
           }
       }

【问题讨论】:

    标签: c# text-files streamreader


    【解决方案1】:
       using (StreamReader reader = 
          File.OpenText(Server.MapPath(@daoWordPuzzle.GetfileURL())))
       {
           //reader.ReadLine returns a string
           //so here you are iterating the first line of the file
           //this means line is a char
           foreach (var line in reader.ReadLine())
           {
               Response.Write(reader.ReadLine() + " <br />");
           }
       }
    

    你应该做的是:

       using (StreamReader reader = 
          File.OpenText(Server.MapPath(@daoWordPuzzle.GetfileURL())))
       {
           string line;
           while((line = reader.ReadLine()) != null)
           {
               Response.Write(line + " <br />");
           }
       }
    

    【讨论】:

      【解决方案2】:

      Spender 介绍了为什么您的循环不起作用,我建议使用更简洁的方法 File.ReadLines。这将在读取行时将它们加载到内存中,因此开销很低。

      试试:

      string path = Server.MapPath(@daoWordPuzzle.GetfileURL());
      
      foreach(string line in File.ReadLines(path))
      {
          Response.Write(line + " <br />");
      }
      

      【讨论】:

      • 您可能想解释为什么这有效以及为什么 OP 无效。我比@Spender 更喜欢这个解决方案,因为它更干净 - 没有凌乱的 while 循环和变量分配。
      • @m.t.bennett 我参考了spender的解决方案,因为我认为不需要重复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2013-04-20
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多