我编写了下面的代码来两次输出文件的内容。但它只做过一次。为什么?
文本文件内容如下:
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."
调用fread()"用完"文件,为了再次fread((),您必须使用倒带($handle)将读取指针移回文件的开头
对于第一个fread(),文件指针移动到文件的末尾,所以第二次不打印任何内容。执行下面的代码,你就会知道。
<?php
$file = "info.txt";
$handle = fopen($file, "rb");
echo fread($handle, filesize($file)-10);
print "-----";
echo fread($handle, filesize($file));
?>
这是因为您已经使用该句柄读取了整个内容。句柄是指向文档的指针。如果你只读取文件的第一个字节(比如前10个字节),就像这样。
fread($handle, 10);
然后下次你调用fread()时,它将从你停止的地方开始。
在您的示例中,第一次调用fread()时使用的是filesize,它会使指针指向文件的末尾。下一次你打电话给fread,就没有什么可回的了,所以你的"回声"回声也没有回来。
希望这能有所帮助,请查看php文档中的fread()和其他文件处理函数,在php.net