2024 年 PHP Conference Japan

RarEntry::getStream

(PECL rar >= 2.0.0)

RarEntry::getStream取得項目的檔案處理器

說明

public RarEntry::getStream(字串 $password = ?): 資源|false

傳回一個支援讀取操作的檔案處理器。此處理器會針對此項目提供即時解壓縮。

呼叫 rar_close() 不會讓此處理器失效。

警告

產生的資料流沒有完整性驗證。尤其是檔案損壞和使用錯誤金鑰解密的情況將不會被偵測。程式設計師有責任使用項目的 CRC 來檢查完整性,如果他希望這樣做的話。

參數

密碼

用於解密此條目的密碼。如果條目未加密,則此值將不會被使用,可以省略。如果省略此參數且條目已加密,則會使用傳遞給 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