使用 php 获取 tar.gz 文件中的文件总数

Posted

技术标签:

【中文标题】使用 php 获取 tar.gz 文件中的文件总数【英文标题】:Get total number of files inside a tar.gz file using php 【发布时间】:2015-06-01 19:57:44 【问题描述】:

我是 php 的菜鸟,但是在一个项目中我想计算有 tar.gz 的文件的数量,我知道如何计算 zip 文件的数量,但我的问题是:我可以(使用 php function) 计算一个 tar.gz 文件中有多少个文件。?

使用 php,我可以使用这样的代码计算 zip 文件中的文件数

$zip = new ZipArchive(); 
if($zip->open("/path/to/the/zip")===true)

    print $zip->numFiles;

else

    print "cant open zip file";

但是对于 tgz 文件,我可以做一些类似的事情吗(不使用 exec 函数)?

谢谢:)


感谢 Kkinsey,我得到了答案(对他的代码进行了一些修改)。最终代码将是

<?php

$archive = new PharData('/route/to/file.tar.gz');
$i=0;
foreach($archive as $file) 

    $i+=1;

print $i;
?>

谢谢@Kkinsey

【问题讨论】:

【参考方案1】:

试试PharData:

// Example: list files
$archive = new PharData('/some/file.tar.gz');
foreach($archive as $file) 
        echo "$file\n";

【讨论】:

谢谢 :D 它运行良好(稍作修改) 不客气!请注意,在更高版本的 PHP(我尝试过 5.7)中,PharData 对象是可迭代的,因此您可能只使用 count($archive) 而不是使用计数器循环。

以上是关于使用 php 获取 tar.gz 文件中的文件总数的主要内容,如果未能解决你的问题,请参考以下文章

windows下解压tar.gz文件

Jmeter问题中的Filename.tar.gz文件下载

读取 tar.gz 中的文件名或文件数

没有解压的 40GB tar.gz 文件中的行数?

在 perl 中提取 tar.gz 文件

使用 SharpZipLib 制作没有文件夹结构的 .tar.gz 存档