检查 ZIP 存档中内容的文件大小

Posted

技术标签:

【中文标题】检查 ZIP 存档中内容的文件大小【英文标题】:Check file sizes of content inside ZIP archive 【发布时间】:2012-08-19 12:59:02 【问题描述】:

我需要打开一个 ZIP 存档,检查存档中每个文件的文件大小并返回一个包含数值(大小)的数组。我不希望提取存档来检查文件大小,可能。

我自己尝试了很多,但似乎没有 ZIP 函数有这样的功能,我想不出任何组合来自己编写函数。

【问题讨论】:

ZipArchive::statIndex 不适合你? ZipArchive::statIndex() 是您正在寻找的,如果您只需要收集有关存档文件的信息。 嗯,这一定是不知何故溜走了,但是谢谢,会尝试从中获得一个功能。 【参考方案1】:

我知道这个问题已经很老了。我希望这个答案可以对某人有所帮助。以下代码循环遍历 test2.zip 文件中的所有文件,并以字节为单位打印其名称和大小。

<?php
$zip = new ZipArchive;
$res = $zip->open('test2.zip');
if ($res) 
    $i=0;
    while(!empty($zip->statIndex($i)['name']))
    
       echo "Filename: ".$zip->statIndex($i)['name']." | Size: ".$zip->statIndex($i)['size']." bytes<br>";
       $i++;
    

?>

输出:

Filename: main.php | Size: 44 bytes
Filename: test.php | Size: 385 bytes
Filename: test2.json | Size: 35 bytes
Filename: Token.txt | Size: 5 bytes
Filename: trans.png | Size: 95442 bytes
Filename: url_xml.xml | Size: 399 bytes

【讨论】:

如果您知道 ZIP 存档中的确切路径,也可以使用 ZipArchive::statName()

以上是关于检查 ZIP 存档中内容的文件大小的主要内容,如果未能解决你的问题,请参考以下文章

zip -9 压缩不会减小文件大小

将 zip 存档拆分为多个块

如何检查该文件是不是存在于 zip 存档中?

如何检查zip存档中是否存在该文件?

通过重新压缩其内容来减小 APK 大小

通过重新压缩其内容来减小 APK 大小