扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年5月18日
关键字:
查看ZIP压缩文件内容
如何查看一个现有的压缩文件呢?Archive::Zip带有一个read()方法,可以阅读一个压缩文件的内容,并可访问与单个文件有关的详细信息。列表B是它的一个应用实例:
列表B
#!/bin/perl
use Archive::Zip;# imports
$obj = Archive::Zip->new();# new instance
$status = $obj->read("dummy.zip");# read file contents
if ($status != AZ_OK) {
die('Error in file!');
} else {
foreach $member ($obj->members()) { # print file information
print $member->fileName(), ", ", $member->uncompressedSize(), ":", $member->compressedSize(), "\n";
}
}
这里,read()方法用于阅读ZIP压缩文件并获得与其内容有关的信息。然后,调用members()方法返回一个结构化对象数组,每个数组元素代表压缩文件中的一个单独文件。通常来说,数组中的每个对象包含相应文件的名称信息、它的许可模式、状态、压缩类型、大小以及最后一次修改时间。我们可以用一个循环方便地提供这些信息,并对它们重新格式化,使它更具可读性,如上面的列表B所示。
以下是一个输出结果样本:
mystuff/ad.gif, 1447:345
mystuff/alcon.doc, 200:34
mystuff/alcon.xls, 28580:21483
…
在现有ZIP压缩文件中插入文件
如果你已经有一个ZIP压缩文件,只需要往其中增加一个新文件,那么操作过程就相当简单:只要调用addFile()方法,增加文件的名称和路径即可。为说明这一点,我们回到dummy.zip文件,并试图给它增加一些新文件。(列表C)
列表C
#!/bin/perl
use Archive::Zip;# imports
$obj = Archive::Zip->new();# new instance
$status = $obj->read('dummy.zip');# read file contents
if ($status != AZ_OK) {
die('Error in file!');
} else {
@files = ('otherstuff/logo.gif',# files to add
'otherstuff/header.gif',
'morestuff/berlin-bear.psd');
foreach $file (@files) {
$obj->addFile($file);# add files
}
if ($obj->overwrite() != AZ_OK) {# overwrite archive with new contents
print "Error in archive creation!";
} else {
print "Archive created successfully!";
}
}
在一个现有压缩文件中插入一个文件的过程与建立一个新压缩文件非常相似:首先初始化一个新的Archive::Zip对象,在其中读入原始的压缩文件,再建立一个包含增加文件清单的数组,并把这个数组提交给循环中的addFile()方法。成功添加文件后,就可以用overwrite()方法用更新后的压缩文件覆盖原始的压缩文件。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者