gpt4 book ai didi

c# - 从巨大的文本文件中读取特定行(c# 4.0)

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:40 24 4
gpt4 key购买 nike

编辑:
@Everyone对不起,我觉得混​​淆int32的大小很傻。问题可以关闭,但由于已经有几个答案,我选择了第一个。
原始问题如下供引用

我正在寻找一种从非常大的文本文件中加载特定行的方法,并且我计划使用 File.ReadLines 和 Skip() 方法:

File.ReadLines(fileName).Skip(nbLines).Take(1).ToArray();

问题是, Skip()需要 int value 和 int 值限制在 200 万左右。对于大多数文件应该没问题,但是 如果文件包含,比如说 2000 万行怎么办? 我尝试使用 long,但 Skip() 的重载不接受 long。

行是可变的,长度未知,所以我无法计算字节数。

是否有不涉及逐行读取或将文件拆分为 block 的选项?此操作必须非常快。

最佳答案

整数是 32 位数字,因此限制在 20 亿左右。

也就是说,如果您必须从文件中随机读取一行,而您只知道该文件有行,那么您将不得不逐行读取它,直到到达您想要的行。您可以使用一些缓冲区来稍微减轻 I/O 的负担(默认情况下它们处于打开状态),但您不会获得比这更好的性能。

除非您更改文件的保存方式。如果你可以创建一个索引文件,包含主文件每一行的位置,你可以无限快地读取一行。

好吧,不是无限的,而是快得多 - 从 O(N) 到几乎 O(1)(几乎是因为在文件中寻找随机字节可能不是 O(1) 操作,具体取决于操作系统的操作它)。

关于c# - 从巨大的文本文件中读取特定行(c# 4.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19744845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com