RarEntry::getStream

(PECL rar >= 2.0.0)

RarEntry::getStreamПолучить обработчик для записи

Описание

public RarEntry::getStream ( string $password = ? ) : resource|false

Возвращает обработчик, поддерживающий операцию чтения. Этот обработчик умеет распаковывать запись на лету.

Обработчик не уничтожается при вызове rar_close().

Внимание

Результирующий поток не проверяется на целостность. Следовательно никак не определяется порча файла или расшифровка с неверным ключом. Проверка контрольной суммы разжатого и расшифрованного файла полностью на совести разработчика.

Список параметров

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($stream8192);
    if (
$buff !== false)
        echo 
$buff;
    else
        break; 
//ошибка fread
}

fclose($stream);

?>

Смотрите также