我有两个zip文件,A.zip
和B.zip
。我想将A.zip
中的任何文件添加到B.zip
。
如何在Perl中使用Archive::Zip
执行此操作?我以为我可以这样做:
my $zipA = Archive::Zip->new();
my $zipB = Archive::Zip->new();
die 'read error' unless ($zipA->read( 'A.zip' ) == AZ_OK );
my @members = $zipA->memberNames();
for my $m (@members) {
my $file = $zipA->removeMember($m);
$zipB->addMember($file);
}
但除非我致电writeToFileNamed()
,否则不会创建任何文件,如果我确实调用了它,则B.zip
会使用A.zip
的内容覆盖。< / p>
我可以阅读B.zip
的内容,并将它们与A.zip
的内容一起写回B.zip
,但这似乎效率很低。 (我的问题实际上涉及数百万个压缩成数千个zip文件的文本文件。)
有更好的方法吗?
答案 0 :(得分:2)
使用Archive::Zip
:
my $zipA = Archive::Zip->new('A.zip');
my $zipB = Archive::Zip->new('B.zip');
foreach ($zipA->members) {
$zipA->removeMember($_);
$zipB->addMember($_);
}
$zipB->overwrite;
问题是:
(我会留给你做错误处理等)
答案 1 :(得分:0)
您可以尝试chilkat::CkZip
而不是Archive::Zip
。它的QuickAppend()
方法似乎很有帮助。