bzread

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

bzreadBinär-sicheres Lesen aus einer bzip2-Datei

Beschreibung

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

bzread() liest Daten vom übergebenen bzip2-Dateizeiger.

Das Lesen wird beendet, wenn length (unkomprimierte) Bytes gelesen wurden oder das Ende der Datei (EOF) erreicht ist, je nachdem, welcher Fall zuerst auftritt.

Parameter-Liste

bz

Der Dateizeiger. Es muss ein valider Zeiger sein und auf eine Datei zeigen, die erfolgreich mittels bzopen() geöffnet wurde.

length

Wenn nichts angegeben ist, liest bzread() 1024 (unkomprimierte) Bytes auf einmal. Maximal 8192 unkomprimierte Bytes können auf einmal gelesen werden.

Rückgabewerte

Gibt die unkomprimierten Daten oder im Fehlerfall false zurück.

Beispiele

Beispiel #1 bzread()-Beispiel

<?php

$file
= "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("Konnte $file nicht öffnen");

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

echo
"Der Inhalt von $file ist: <br />\n";
echo
$decompressed_file;

?>

Siehe auch

  • bzwrite() - Binär-sicheres Schreiben einer bzip2-Datei
  • feof() - Prüft, ob ein Dateizeiger am Ende der Datei steht
  • bzopen() - Öffnet eine bzip2-komprimierte Datei

add a note add a note

User Contributed Notes 2 notes

up
3
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
2
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