我有一个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文件中文件夹结构下的文件吗?
提前致谢。
答案 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');