2013-12-03 43 views
3

streamreader中是否有函數允許在下一行查看更多信息而無需將迭代器移動到下一個位置?readline然後將指針移回?

在當前行的操作取決於下一行,但我想繼續使用這個代碼塊

while((Line = sr.ReadLine())!=null) 
+6

是否有任何理由不將整個文件讀入內存並在那裏使用?尺寸是否過大? – Yuck

+1

@Yuck,對,文件太大而無法加載到內存中 – Yang

+1

如何通過一次讀取兩行代碼來工作?你需要知道只有在下一行或更多的什麼? – rageit

回答

8

原則的完整性,也沒有必要做這樣的事情。如果你想連接兩條連續的線,只需將分析調整到這個事實(在讀取第2行的同時執行第1行)。示例代碼:

using (System.IO.StreamReader sr = new System.IO.StreamReader("path")) 
{ 
    string line = null; 
    string prevLine = null; 
    while ((line = sr.ReadLine()) != null) 
    { 
     if (prevLine != null) 
     { 
      //perform all the actions you wish with the previous line now 
     } 

     prevLine = line; 
    } 
} 

這可能適合作爲來處理儘可能多的行(前行,而不是僅僅prevLine的集合)。

+0

謝謝。我目前使用的方式與您的方式完全相同(即使變量名稱也是意外相同:)),只是想知道是否還有其他更好的方法。 – Yang

+2

@Yang(我選擇了一個好名字,然後:))如果一切正常,爲什麼改變它?我已經使用了這種方法,並且從來沒有遇到任何問題:可靠,清晰和快速。 – varocarbas

+1

@楊我第二。我會推測這是最常見的方法。實際上,我花了幾分鐘的時間尋找一些使用StreamReader方法進行處理的合理方法,但找不到任何有用的東西。 – evanmcdonnal

相關問題