bzread

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzread二进制安全的 bzip2 文件读取

描述

bzread(resource $bz, int $length = 1024): string|false

bzread() 从给定的 bzip2 文件指针读取。

当读取到 length(未压缩)字节或到达 EOF 时,读取停止,以先发生者为准。

参数

bz

文件指针。它必须有效,并且必须指向由 bzopen() 成功打开的文件。

length

如果未指定,bzread() 将一次读取 1024(未压缩)字节。一次最多读取 8192 个未压缩字节。

返回值

返回未压缩的数据,或在发生错误时返回 false

示例

示例 #1 bzread() 示例

<?php

$file
= "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("Couldn't open $file");

$decompressed_file = '';
while (!
feof($bz)) {
$decompressed_file .= bzread($bz, 4096);
}
bzclose($bz);

echo
"The contents of $file are: <br />\n";
echo
$decompressed_file;

?>

参见

  • bzwrite() - 二进制安全的 bzip2 文件写入
  • feof() - 测试文件指针的 EOF
  • bzopen() - 打开一个 bzip2 压缩文件

添加备注

用户贡献的备注 2 条备注

3
user@anonymous
12 年前
确保在循环遍历 bzfile 时检查 bzerror。bzread 不会检测到压缩错误,即使以 100% CPU 为代价,它也可以无限期地继续。

$fh = bzopen('file.bz2','r');
while(!feof($fh)) {
$buffer = bzread($fh);
if($buffer === FALSE) die('Read problem');
if(bzerror($fh) !== 0) die('Compression Problem');
}
bzclose($fh);
2
匿名
8 年前
之前发布的代码中有一个小错误:它使用了 bzerror 而不是 bzerrno。应该像这样

$fh = bzopen('file.bz2','r');
while(!feof($fh)) {
$buffer = bzread($fh);
if($buffer === FALSE) die('Read problem');
if(bzerrno($fh) !== 0) die('Compression Problem');
}
bzclose($fh);
To Top