php fread文件功能

时间:2013-02-22 04:28:19

标签: php file

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

文本文件内容如下:

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."

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

对于第一个 fread(),文件指针移动到文件的末尾,因此第二次没有打印。 执行波纹管代码,你就会知道。

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

答案 2 :(得分:0)

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

fread($handle, 10);

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

在您的示例中,第一次调用fread()时,您使用filesize,这会使指针指向文件的末尾。接下来你称之为fread,没有任何东西可以返回,因此你的“回声”回声没有回来。

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