2013-11-02 58 views
0

首先,我不是使用c#最有經驗的人,我迄今爲止唯一做的就是讀取整個文本文件。閱讀文本文件的最後幾行? c#

我想讀一個文本文件的最後幾行,我最終需要爲幾個文本文件做這件事,每個文件的格式都是一樣的,大約有80條奇怪的信息,我'如果可能的話,當'#Footer'這個單詞到達時,我希望讀完這個單詞之後的所有行(大概我會在'#Footer'這個單詞之後保留大約6/7行'頁腳'爲每個文本文件)。

關於如何去做這件事的任何想法?謝謝

+0

有多大這些文件? – Kamil

+0

如果你想搜索一些文本 - 你必須閱讀整個文件。 – Kamil

回答

6

您可以使用File.ReadLines這不需要將整個文件加載到內存。

var lines = File.ReadLines(fname) 
      .SkipWhile(line => !line.StartsWith("#Footer")) 
      .Skip(1) 
      .ToList(); 

編輯

Console.WriteLine(String.Join(Environment.NewLine, lines)); 
+0

或'!line.Contains(「#Footer」)' – Kamil

+0

謝謝你,但是在寫完所有內容並運行之後,在命令控制檯中它只是說'按任意鍵繼續...'任何線索,錯了嗎?對不起,我的知識缺乏:L – user2948119

+0

@ user2948119沒有錯,你只是跑你的程序。你用'線路'做什麼?你有沒有試圖展示它? –

0
private String GetFooter(String filePath) 
     { 

      String inputText = "#Footer"; 
      String footerText =""; 
      String [] allFileLines=(String[])File.ReadLines(filePath).ToArray(); 
      int footerLineNo = -1; 
      for (int i = 0; i < allFileLines.Length; i++) 
      { 
       if (allFileLines[i].Contains(inputText)) 
        footerLineNo = i; 
      } 

      if (footerLineNo > -1) 
      { 
       for (int i = footerLineNo + 1; i < allFileLines.Length; i++) 
        footerText += allFileLines[i]+"\n"; 
      } 
      return footerText; 
     } 
0

試試這個

 bool check= false; 
     string myline; 
     string mytext = ""; 
     StreamReader reader = new StreamReader("temp.txt"); 
     while ((myline= reader.ReadLine()) != null) 
     { 
      if (myline.Contains("#Footer") || check) 
      { 
       check= true; 
       mytext += line; 
      } 
     }