【问题标题】:is it right way to read text file from bottom to top? [duplicate]从下到上读取文本文件是否正确? [复制]
【发布时间】:2012-11-30 08:45:24
【问题描述】:

可能重复:
How to read a text file reversely with iterator in C#

我需要通过以下代码行从下到上读取超过 700 万行 的 txt 文件:我想知道这是正确的方法还是我应该使用迭代器来完成这项任务? stackoverflow 中已有一些使用迭代器的答案。

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

【问题讨论】:

  • @ThomAS 请阅读我的问题,我已经访问了链接,我不要求回答只是建议。
  • 推迟微优化,直到你遇到性能问题,基准。
  • @JanDvorak 虽然这是个好建议,但就如何做到这一点而言,这个问题仍然有效。在上面的链接副本中回答得非常好
  • 帖子stackoverflow.com/questions/452902/… 解释了另一种更高效但更容易出错的方式。关于“正确的做法”:目前对您有用吗?我同意@JanDvorak 的意见。
  • @ThomAS 容易出错,那么为什么它在框架中?

标签: c#


【解决方案1】:

由于文件不是基于行的,因此没有方便的方法从文件末尾读取行。只要整个文件适合内存,您所做的工作就可以正常工作。

如果遇到内存问题,可以分块读取文件,例如File.ReadLines(path).Skip(6000000),然后是 File.ReadLines(path).Skip(5000000).Take(1000000)。这将每次都读取该文件,但它会使用更少的内存。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2020-03-27
    • 2018-03-21
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    相关资源
    最近更新 更多