2012-11-30 65 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)。这将每次都读取文件,但它会占用更少的内存。

另一种方法是从文件中读取字节块,找到字节中的换行符,并将它们之间的字节解码为字符串。