Archive :: Zip复制添加的文件 - 如何正确更新zip文件?

时间:2012-04-10 11:09:08

标签: perl

我有一个zip文件,我必须更新文件夹下的文件,下面的块工作“井”,它正确添加文件node.ndf在指定的路径下。

但如果我第二次或更多次运行它,它会复制文件夹

下的文件

例如:


第一次运行:

file.zip内容:

manifest.v3

NS /适应/ node.ndf


第二次运行:

manifest.v3

NS /适应/ node.ndf

NS /适应/ node.ndf


依旧......

以下是我目前正在使用的代码:

$obj = Archive::Zip->new();  

$status = $obj->read($file); 

if ($status != AZ_OK) {
die('Error in file!');
    } else {
        @files = ('node.ndf');

       foreach $filea (@files) {
    $obj->addFile($filea); 
    $obj->addTreeMatching( '.', 'ns/adapt/', 'node.ndf' );
   }

   if ($obj->overwrite() != AZ_OK) {  
    print "Error in archive creation!";
    exit;

    } else {
    print "Archive created successfully!";
    }
unlink('node.ndf');
 }

任何人都知道Archive :: Zip的正确用法是为了更新zip文件中文件夹结构下的文件吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你可以

$obj->removeMember('ns/adapt/node.ndf');
$obj->addFile('node.ndf', 'ns/adapt/node.ndf');

或者,如果您的node.ndf文件的大小或修改时间发生了变化,您只需一步即可完成这两项操作

$obj->updateMember('ns/adapt/node.ndf', 'node.ndf');