"line 1" f[21] #=> "line 22" 但是如果我有一个非常大的文件,并且只需要读取几-6ren">
gpt4 book ai didi

ruby - 有没有办法在不将整个文件加载到数组中的情况下搜索文件?

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:55 26 4
gpt4 key购买 nike

这个有效:

f = File.new("myfile").readlines
f[0] #=> "line 1"
f[21] #=> "line 22"

但是如果我有一个非常大的文件,并且只需要读取几行怎么办?是否可以在不将文件加载到数组的情况下查找特定行并在 Ruby 中读取它们?

我理解 IO 流,其中(就像在 stdin 的情况下)您不能随机搜索流。当然,必须有一种方法可以在不加载整个文件的情况下执行此操作。

最佳答案

不要忽略 IO 类。 IO::foreach 是返回枚举器的方法之一,可以延迟计算。

IO#each_line 也是将返回枚举器的另一个。

在 Ruby 2.0 中,我们可以调用 .lazy 并使用除 zip 和 cycle 之外的那些方法,这些方法允许我们遍历枚举而无需将整个文件放入内存。

关于ruby - 有没有办法在不将整个文件加载到数组中的情况下搜索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16729618/

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