RarEntry::getStream
このエントリのファイルハンドラを取得する
説明
public resourcefalse RarEntry::getStream(string $password
= ?)
このハンドラは、rar_close をコールしても無効にはなりません。
警告
返されるストリームでは、整合性の検証を行いません。
特に、ファイルの破損や間違ったキーによる復号は検出できません。
もし整合性を検証したいのなら、エントリの
CRC を確認するのはプログラマ側の役割となります。
パラメータ
-
password
-
このエントリの暗号化に使うパスワード。
エントリが暗号化されていない場合は、この値は使われずに無視されます。
このパラメータが省略されていてエントリが暗号化されていた場合は、もし
rar_open でパスワードを指定していればそれを使います。
このパラメータや rar_open で指定したパスワードが間違っていたときは、
このメソッドの結果のストリームは間違った結果を出力します。
パスワードが要求されているときにパスワードを指定していなければ、
このメソッドは失敗して false
を返します。
エントリが暗号化されているかどうかを知るには RarEntry::isEncrypted
を使います。
戻り値
ファイルハンドラを返します。失敗した場合に false
を返します。
例
例1 RarEntry::getStream の例
<?php
$rar_file = rar_open('example.rar');
if ($rar_file === false)
die("Rar アーカイブのオープンに失敗しました");
$entry = rar_entry_get($rar_file, 'Dir/file.txt');
if ($entry === false)
die("そのようなエントリは見つかりません");
$stream = $entry->getStream();
if ($stream === false)
die("ストリームの取得に失敗しました");
rar_close($rar_file); // ストリームはファイルとは独立しています
while (!feof($stream)) {
$buff = fread($stream, 8192);
if ($buff !== false)
echo $buff;
else
break; // fread のエラー
}
fclose($stream);
?>