PHP Conference Japan 2024

bzopen

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

bzopen打开一个 bzip2 压缩文件

描述

bzopen(字符串|资源 $file, 字符串 $mode): 资源|false

bzopen() 打开一个 bzip2 (.bz2) 文件以进行读取或写入。

参数

file

要打开的文件名,或现有的流资源。

mode

支持的模式为 'r'(读取)和 'w'(写入)。其他任何模式都将导致 bzopen() 返回 false

返回值

如果打开失败,bzopen() 返回 false,否则返回指向新打开文件的指针。

示例

示例 #1 bzopen() 示例

<?php

$file
= "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("无法打开 $file 进行读取");

bzclose($bz);

?>

参见

添加注释

用户贡献注释 2 条注释

KrazyBox
15 年前
在某些情况下,您可能希望将 bzip2 流发送到客户端。

为此,您只需执行以下操作

<?php
ob_flush
();
$bz = bzopen('php://stdout', 'w');
bzwrite($bz, 'some input here');
bzclose($bz);
?>

但是,请注意,因为您正在使用 STDOUT,所以在实际写入流之前需要进行 ob_flush()。否则,您可能会在标头之前发送数据,这将在大多数情况下导致服务器端和客户端端出现错误。

您可能可以使用 php://output 而不是 php://stdout,但是在我(使用 Linux)的测试中,php://output 根本不起作用。
Jille at quis dot cx dot spam dot to dot my dot devnull
16 年前
警告!

上面显示的示例并非在所有情况下都适用!
此示例将继续读取,直到没有更多数据为止

<?PHP
$bz
=bzopen('foo.bz2', 'r');
$data="";
do {
$line=bzread($bz, 8092);
if(
$line!==false)
$data.=$line;
}
while(
$line);
bzclose($bz);
?>
To Top