2012-11-30 66 views
-3

可能重複:
How to read a text file reversely with iterator in C#從底部到頂部閱讀文本文件是否正確?

我需要的只是簡單地跟着行代碼讀取TXT文件超過700萬線從底部到頂端:我想知道的是正確的方式還是我應該使用迭代器來完成這項任務?一些使用迭代器的答案已經在stackoverflow中。

 foreach (string line in File.ReadAllLines("read.txt").Reverse()) 
     {    
      Console.WriteLine(line); 
     } 
+0

@ThomAS請閱讀我的問題,我已經讀過鏈接,我不是要求回答只是建議。 – MMK

+1

推遲微觀優化,直到達到性能問題,基準。 –

+0

@JanDvorak雖然這是很好的建議,但問題仍然是如何做到這一點。這個答案真的很好,鏈接副本上面只有 –

回答

0

由於文件不是基於行的,因此沒有方便的方式從文件末尾讀取行。只要整個文件適合內存,你所做的工作就很好。

如果遇到內存問題,可以按塊讀取文件,例如File.ReadLines(path).Skip(6000000),然後File.ReadLines(path).Skip(5000000).Take(1000000)。這將每次都讀取文件,但它會佔用更少的內存。

另一種方法是從文件中讀取字節塊,找到字節中的換行符,並將它們之間的字節解碼爲字符串。