0

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

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

例如:


第一次运行:

文件.zip 内容:

清单.v3

ns/adapt/node.ndf


第二次运行:

清单.v3

ns/adapt/node.ndf

ns/adapt/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 文件的文件夹结构下的文件?

提前致谢。

4

1 回答 1

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');
于 2012-04-10T12:08:54.720 回答