仅从文件中读取第一行的最快、最简单的方法是什么?我知道您可以使用 file
,但就我而言,浪费时间加载整个文件是没有意义的。
最好是单线。
原文由 Jonah 发布,翻译遵循 CC BY-SA 4.0 许可协议
仅从文件中读取第一行的最快、最简单的方法是什么?我知道您可以使用 file
,但就我而言,浪费时间加载整个文件是没有意义的。
最好是单线。
原文由 Jonah 发布,翻译遵循 CC BY-SA 4.0 许可协议
在现代 PHP 中使用 SplFileObject
;
$fileObject = new \SplFileObject('myfile');
$line = $fileObject->current();
补充信息
使用 SplFileObject
也很容易找行,例如跳过 2 行;
$fileObject = new \SplFileObject('myfile');
$fileObject->seek(2);
$line = $fileObject->current();
或阅读前 10 行;
$fileObject = new \SplFileObject('myfile');
$lines = '';
for ($i = 0; $i < 10 && $fileObject->valid(); ++$i) {
$lines .= $fileObject->getCurrentLine();
}
_注意_: getCurrentLine()
将读取当前行并将内部光标移动到下一行(本质上是 current()
+ next()
)
原文由 Fabien Sa 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答716 阅读✓ 已解决
2 回答2.3k 阅读
1 回答4.9k 阅读
好吧,你可以这样做:
这不是一行,但是如果您将其设置为一行,您要么会因为错误检查而被搞砸,要么让资源打开的时间超过您需要的时间,所以我会说保留多行
编辑
如果您 绝对 知道该文件存在,则可以使用单行:
原因是 PHP 为资源实现了 RAII 。
这意味着当文件句柄超出范围时(在这种情况下,在调用 fgets 之后立即发生),它将被关闭。