RarEntry::getStream
(PECL rar >= 2.0.0)
RarEntry::getStream — このエントリのファイルハンドラを取得する
説明
public RarEntry::getStream
([ string $password
] ) : resource|false
読み込み操作をサポートするファイルハンドラを返します。 このハンドラを使って、このエントリをその場で展開します。
このハンドラは、rar_close() をコールしても無効にはなりません。
警告 返されるストリームでは、整合性の検証を行いません。 特に、ファイルの破損や間違ったキーによる復号は検出できません。 もし整合性を検証したいのなら、エントリの CRC を確認するのはプログラマ側の役割となります。
パラメータ
password
- このエントリの暗号化に使うパスワード。 エントリが暗号化されていない場合は、この値は使われずに無視されます。 このパラメータが省略されていてエントリが暗号化されていた場合は、もし rar_open() でパスワードを指定していればそれを使います。 このパラメータや rar_open() で指定したパスワードが間違っていたときは、 このメソッドの結果のストリームは間違った結果を出力します。 パスワードが要求されているときにパスワードを指定していなければ、 このメソッドは失敗して
false
を返します。 エントリが暗号化されているかどうかを知るには RarEntry::isEncrypted() を使います。
返り値
ファイルハンドラを返します。失敗した場合に false
を返します。
変更履歴
バージョン | 説明 |
---|---|
PECL rar 3.0.0 | エントリ名が繰り返される RAR アーカイブも対応するようになりました。 |
例
例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);?>