PHP8 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() 检查条目是否加密。
返回值
The file handler 或者在失败时返回 false.
更新日志
版本 | 说明 |
---|---|
PECL rar 3.0.0 | 对具有重复条目名称的 RAR 存档的支持不再有缺陷。 |
示例
示例 #1 RarEntry::getStream() example
<?php
$rar_file = rar_open('example.rar');
if ($rar_file === false)
die("Failed to open Rar archive");
$entry = rar_entry_get($rar_file, 'Dir/file.txt');
if ($entry === false)
die("Failed to find such entry");
$stream = $entry->getStream();
if ($stream === false)
die("Failed to obtain stream.");
rar_close($rar_file); //stream is independent from file
while (!feof($stream)) {
$buff = fread($stream, 8192);
if ($buff !== false)
echo $buff;
else
break; //fread error
}
fclose($stream);
?>
参见
- RarEntry::extract() - 从存档中提取条目
- rar:// wapper