首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP检查文件在.tar中是否存在

使用PHP检查文件在.tar中是否存在
EN

Stack Overflow用户
提问于 2014-06-19 17:12:19
回答 1查看 334关注 0票数 0

在我的程序中,我需要从.tar文件中读取.png文件。

我使用的是pear Archive_Tar类(http://pear.php.net/package/Archive_Tar/redirected)

如果im查找的文件存在,则一切正常,但是如果它不在.tar文件中,则函数在30秒后超时。在类文档中,它声明如果找不到文件,则应返回null ...

代码语言:javascript
运行
复制
$tar = new Archive_Tar('path/to/mytar.tar');

$filePath = 'path/to/my/image/image.png';

$file = $tar->extractInString($filePath); // This works fine if the $filePath is correct
                                          // if the path to the file does not exists
                                          // the script will timeout after 30 seconds

var_dump($file);
return;

有什么建议可以解决这个问题或任何其他我可以用来解决问题的库吗?

EN

回答 1

Stack Overflow用户

发布于 2014-06-19 20:50:33

listContent方法将返回指定存档中存在的所有文件(以及有关这些文件的其他信息)的数组。因此,如果您首先检查要提取的文件是否存在于该数组中,则可以避免遇到的延迟。

下面的代码没有经过优化-对于提取不同文件的多次调用,例如$files数组应该只填充一次-但这是一种很好的前进方式。

代码语言:javascript
运行
复制
include "Archive/Tar.php";
$tar = new Archive_Tar('mytar.tar');

$filePath = 'path/to/my/image/image.png';

$contents = $tar->listContent();
$files = array();
foreach ($contents as $entry) {
    $files[] = $entry['filename'];
}

$exists = in_array($filePath, $files);
if ($exists) {
    $fileContent = $tar->extractInString($filePath);
    var_dump($fileContent);
} else {
    echo "File $filePath does not exist in archive.\n";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24302922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档