3

我编写了以下代码来两次输出文件的内容。但它只做了一次。这是为什么?

文本文件内容如下:

My name is Sam. Sam I am.
My name is Chris and Chris I am.
The brown fox jumped over the fence.

代码如下:

<?php
$file = "files/info.txt";
$handle = fopen($file, "rb");
echo fread($handle, filesize($file));
echo fread($handle, filesize($file));
?>

输出:

"My name is Sam. Sam I am. My name is Chris and Chris I am. The brown fox jumped over the fence."
4

3 回答 3

6

调用 fread() “用完”文件,为了再次 fread() ,您必须使用 rewind($handle) 将读取指针移回文件的开头

于 2013-02-22T04:33:05.453 回答
1

对于第一次fread(),文件指针移动到文件末尾,因此第二次没有打印任何内容。执行下面的代码,你就知道了。

<?php
$file = "info.txt";
$handle = fopen($file, "rb");
echo fread($handle, filesize($file)-10);
print "-----";
echo fread($handle, filesize($file));
?>
于 2013-02-22T04:46:44.467 回答
0

这是因为您已经使用该句柄阅读了全部内容。句柄是指向文档的指针。如果您要像这样只读取文件的第一个字节(比如前 10 个字节)。

fread($handle, 10);

然后下次你调用 fread() 时,它会从你离开的地方开始。

在您的示例中,第一次调用 fread() 您使用文件大小,这使您的指针指向文件末尾。下一次你调用 fread,没有什么可以返回,因此你的“回声”回声没有任何返回。

希望这会有所帮助,请查看 php 文档中的 fread() 和其他文件处理函数以在 php.net 获得更多解释

于 2013-02-22T04:40:18.823 回答