2013-06-26 160 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

相關問題