2013-06-26 123 views
0

我的streamReader正在从特定位置读取我的文本文件,但它只读取9行而不是10行,文本文件由10行组成,这里出错了吗?它省略了第一行,只显示了其余的9行。从文本文件读取的C#StreamReader丢失第一行

这里是我的代码:

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

回答

2
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

富豪涵盖为什么你的循环没有工作,我建议一个更清洁的方法File.ReadLines。这会在读取时将这些行加载到内存中,所以它的开销很低。

尝试:

string path = Server.MapPath(@daoWordPuzzle.GetfileURL()); 

foreach(string line in File.ReadLines(path)) 
{ 
    Response.Write(line + " <br />"); 
} 
+0

您可能要解释为什么这工作,为什么OP的没有。 我比@Spender更喜欢这个解决方案,因为它更干净 - 在循环和变量赋值时没有混乱。 –

+0

@ m.t.bennett因为我不认为需要重复,所以我提到了spender的解决方案。 – Romoku

相关问题