fread() 用于二进制数据,但是它有读取字符数量的限制。
$source_file = fopen( $filename, "r" ) or die("Couldn't open $filename");
while (!feof($source_file)) {
$buffer = fread($source_file, 5);
var_dump($buffer); //return string with length 5 chars!
}
已读取长度为5字节的内容。
fread
还有一种情况会停止读取。 fread
有一个 8192 字节的块限制。 当我从 fread($stream, 8300)
和 fget($stream, 8300)
获取不同结果时,我发现了这一点。fread
文档:
如果流是读取缓冲的,并且它不代表一个普通文件,则最多只进行一次读取,该读取最多达到块大小(通常为 8192); 根据先前缓冲的数据,返回的数据大小可能大于块大小。
这两个函数都是用来从文件中读取数据的。
fgets($filename, $bytes) fgets通常会读取$bytes-1的数据量,并在遇到换行符或EOF(文件末尾)时停止。如果未指定字节数,则默认值为1024字节。
fread($filename, $bytes) fread会精确地读取$bytes的数据量,并且只在遇到EOF时停止。