我正在更改执行压缩的PERL代码,以便能够处理zip64
扩展名。
旧代码正在使用Archive::Zip
模块,可以按如下方式使用。
# Create a Zip file
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
my $zip = Archive::Zip->new();
# Add a file from disk
my $file_member = $zip->addFile( 'xyz.pl', 'AnotherName.pl' );
Archive::Zip
不支持zip64
扩展名,因此我使用的是IO::Compress::Zip
模块。
我正在寻找一种以某种方式模仿addfFile
功能的方法,在压缩时重命名或者在压缩后编辑档案。
我找不到任何可以帮助我这样做的PERL模块。
谢谢
答案 0 :(得分:2)
我认为这是你在PerlMonks Renaming a file member in zip64 archive上提出的问题?
如果是,请回答相同的内容。
尝试这一点 - 如果需要,它将自动创建输出文件作为符合Zip64标准的Zip存档(即,如果大小超过4千兆位,或者您在zip存档中有> 64k成员)。否则,它会创建一个标准的Zip存档。
use Archive::Zip::SimpleZip qw($SimpleZipError) ;
my $z = new Archive::Zip::SimpleZip "my1.zip"
or die "Cannot create zip file: $SimpleZipError\n" ;
$z->add('xyz.pl', Name => 'AnotherName.pl' );
$z->close();
如果要强制创建Zip64存档(即使存档足够小而不需要它),在创建Archive :: Zip :: SimpleZip对象时添加 Zip64 选项,像这样
my $z = new Archive::Zip::SimpleZip "my1.zip", Zip64 => 1
or die "Cannot create zip file: $SimpleZipError\n" ;
答案 1 :(得分:0)
我不确定是否有办法用IO :: Compress :: Zip来做,但是。 为什么不在将文件添加到存档之前重命名文件? 如果您需要保存带有名称的原始文件,请将文件复制到某个临时文件夹,重命名,然后从temp中归档和删除。