• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • bzread()

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

    bzip2 文件二进制安全地读取

    说明

    bzread(resource $bz[,int $length= 1024]): string

    bzread()从指定的 bzip2 文件指针中读取数据。

    读取到$length(未经压缩的长度)个字节,或者到文件尾,取决于先到哪个。

    参数

    $bz

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

    $length

    如果没有提供,bzread()一次会读入 1024 个字节(未经压缩的长度)。一次最大可读入 8192 个未压缩的字节。

    返回值

    返回解压的数据,在错误时返回FALSE

    范例

    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()测试文件指针是否到了文件结束的位置
    • bzopen()打开 bzip2 压缩文件
    Make sure you check for bzerror while looping through a bzfile. bzread will not detect a compression error and can continue forever even at the cost of 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);
    The earlier posted code has a small bug in it: it uses bzerror instead of bzerrno. Should be like this:
    $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);

    上篇:bzopen()

    下篇:bzwrite()