扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年3月9日
关键字:
查看TAR文档内容
如何查看已经存在的TAR文件的内部信息呢?Archive_Tar类有一个listContent()方法,该方法可以查看一个TAR包中的每个组件的详细信息。列表B显示了如何使用它:
列表 B
<php
include ('Archive/Tar.php');// import class
$obj = new Archive_Tar('dummy.tar'); // name of archive
$files = $obj->listContent();// array of file information
foreach ($files as $f) {
foreach ($f as $k => $v) {
echo "$k: $v\n";
}
echo "\n";
}
>
listContent()方法的输出是一个结构化数组,每个数组元素代表文档中的一个文件。典型的是,每个元素有相应文件的名字信息,它的许可模式,所有者和组用户的ID,状态,大小和上一次修改的时间。通过一个循环可以很容易的提取这些信息,然后再对格式稍作修改使它根据表达性,像上面的例子中提到的。下面是一个输入示例:
校验和:3872
文件名:mystuff/alcon.doc
模式:33206
用户ID:433
组ID:106
大小:41472
时间:1140358031
向已经存在的TAR文档中添加文件
由于我们大家的健忘性,有时可能忘记某个文件,Archive_Tar 类通过add()方法提供了
向已经存在的文档中添加新文件的能力。为了演示,我们再回到上文的dummy.tar文档,试着给它添加一个新文件(列表C):
列表C
<php
include ('Archive/Tar.php');// import class
if (file_exists('dummy.tar')) {
$obj = new Archive_Tar('dummy.tar'); // name of TAR file
} else {
die('File does not exist');
}
$files = array('otherstuff/logo.gif',
'otherstuff/header.gif',
'morestuff/berlin-bear.psd'); // additional files
if ($obj->add($files)) {
echo 'Added successfully!';
} else {
echo 'Error in file addition';
}
>
从已经存在的TAR文档中提取文件
在你将文件存入文档之后,如何读取它们呢?使用extractList()方法,显然,这个方法可以从一个已经存在的文档中提取一个或多个文件到一个指定目录,如列表D:
列表D
<php
include ('Archive/Tar.php');// import class
if (file_exists('dummy.tar')) {
$obj = new Archive_Tar('dummy.tar'); // name of TAR file
} else {
die('File does not exist');
}
$files = array('otherstuff/logo.gif',
'mystuff/alcon.doc'); // files to extract
if ($obj->extractList($files, 'unpackaged/')) {
echo 'Extracted successfully!';
} else {
echo 'Error in file extraction';
}
>
这里,要提取文件数组传递给extractlist()方法,同时包括提取文件存入的目录名。注意的是文件将连同它们的内部目录结构一起被提取出来(虽然这个行为可以通过传递特殊参数给extractlist()方法进行修改)。
除了这种可选择提取,还可以使用extract()方法,这个方法解压整个文档,提取所有文件到一个指定目录。如果这个目录不存在,它将通过extract()方法自动创建,当然要假设脚本据有些磁盘的许可权。列表E显示如何去做:
列表E
<php
include ('Archive/Tar.php'); // import class
if (file_exists('dummy.tar')) {
$obj = new Archive_Tar('dummy.tar'); // name of TAR file
} else {
die('File does not exist');
}
if ($obj->extract('unpackaged/')) {
echo 'Extracted successfully!';
} else {
echo 'Error in file extraction';
}
>
如上面的例子演示,PEAR的Archive_Tar类是多功能的,它允许你仅用几行简单的代码就可以执行一些相当复杂的TAE行为。希望本文中的示例脚本对你在日常的开发活动中使用Archive_Tar类有所帮助。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者