PHP Conference Nagoya 2025

bzread

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

bzreadLectura segura de ficheros bzip2

Descripción

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

bzread() lee del puntero de fichero bzip2 pasado como parámetro.

La lectura finaliza una vez que se han leído length bytes (descomprimidos) o cuando se alcanza EOF, lo primero que suceda.

Parámetros

bz

El puntero al fichero. Tiene que ser válido y debe apuntar a un fichero que se haya abierto con éxito con bzopen().

length

Si no se especifica, bzread() leerá bloques de 1024 bytes (descomprimidos) al momento. Un máximo de 8192 bytes descomprimidos serán leídos.

Valores devueltos

Devuelve la información descomprimida, o false en caso de error.

Ejemplos

Ejemplo #1 ejemplo de bzread()

<?php

$file
= "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("No se ha podido abrir $file");

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

echo
"El contenido de $file es: <br />\n";
echo
$decompressed_file;

?>

Ver también

  • bzwrite() - Escribe en un fichero bzip2 de forma segura binariamente
  • feof() - Comprueba si el puntero a un archivo está al final del archivo
  • bzopen() - Abre un fichero comprimido con bzip2

add a note

User Contributed Notes 2 notes

up
2
user@anonymous
12 years ago
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);
up
1
Anonymous
9 years ago
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);
To Top