0

フォルダーの下のファイルを更新する必要があるzipファイルがあります。次のブロックは「うまく」機能し、指定されたパスの下にファイルnode.ndfを正しく追加します。

しかし、2回目以上実行すると、フォルダの下にファイルが複製されます

例として:


初回実行:

file.zip コンテンツ:

マニフェスト.v3

ns/adapt/node.ndf


2 回目の実行:

マニフェスト.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');
 }

zip ファイルのフォルダー構造の下にあるファイルを更新するための Archive::Zip の正しい使用法を知っている人はいますか?

前もって感謝します。

4

1 に答える 1

1

あなたはどちらかをすることができます

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

または、node.ndfファイルのサイズや変更時間が変更された場合は、次の方法で両方を1つのステップで実行できます。

$obj->updateMember('ns/adapt/node.ndf', 'node.ndf');
于 2012-04-10T12:08:54.720 に答える