【发布时间】:2019-08-04 23:18:20
【问题描述】:
我有一个 2 GiB 的文件,我想读取文件的第一行。
我可以调用返回数组的File#readlines方法,并使用[0]括号语法,at(0),或slice(0)或first方法。
但是有一个问题。我的 PC 有 3.7 GiB RAM,使用量从 1.1 GiB 一直到 3.7 GiB。但我想要的只是文件的第一行。有没有有效的方法来做到这一点?
【问题讨论】:
-
这能回答你的问题吗? How to get a particular line from a file
-
呃,不,想象一下拥有一百 GB 文件的夸张情况。当你运行
tail 100_GB_file时,tail 将只读取最后 10 行或给定的行。您基本上不需要运行数十亿次迭代并在IO.foreach(file, splitter)上调用.next(),或者您无法在微不足道的 8 GB RAM 中读取整个文件。我不知道这在 Ruby 中是否可行。但是我已经用 Ruby C Extension 解决了这个问题,尤其是用 C 语言读取文件。这真正解决了我的问题:geeksforgeeks.org/…。但这不是真正的红宝石解决方案...... -
很高兴了解您的解决方案,但您的问题与尾巴无关。
标签: ruby