PHP Conference Nagoya 2025

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

fclose($stream);

?>

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

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top