如何获取 3 gig 文本文件中的特定行。这些行由\n 分隔。我需要能够按需接通任何线路。
如何做到这一点?只需要返回一行。而且我不想使用任何系统调用。
注意:关于如何在 bash 中执行此操作,其他地方也有同样的问题。我想将它与 PHP equiv 进行比较。
更新:每一行在整个过程中都是相同的长度。
最佳答案
如果不为文件保留某种索引,您将需要读取所有文件,直到遇到 x 个\n 字符。我看到 nickf 刚刚发布了一些这样做的方法,所以我不再重复。
要以高效的方式重复执行此操作,您需要构建索引。为某些(或所有)行号存储一些已知的文件位置一次,然后您可以使用它来使用 fseek 寻找正确的位置.
编辑:如果每行长度相同,则不需要索引。
$myfile = fopen($fileName, "r");
fseek($myfile, $lineLength * $lineNumber);
$line = fgets($myfile);
fclose($myfile);
在此示例中,行号为 0,因此您可能需要先减去 1。行长度包括 \n
字符。
关于php - 使用 PHP 在一个大文件中获取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2794056/