(PECL rar >= 2.0.0)
RarEntry::getStream — 取得項目的檔案處理器
傳回一個支援讀取操作的檔案處理器。此處理器會針對此項目提供即時解壓縮。
呼叫 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);
?>