2012-04-10 12 views
0

私はフォルダの下のファイルを更新する必要があるzipファイルを持っています。次のブロックは "うまく"動作し、指定されたパスのnode.ndfファイルを正しく追加します。Archive ::ジップ追加ファイル - ジップ内のファイルを正しく更新するにはどうすればいいですか?

が、私は二時間以上のためにそれを実行する場合、それは一例として、フォルダ

下のファイルを複製します:


初めてラン:

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'); 
} 

誰でもアーカイブの正しい使用方法を知っている:: zipファイルのフォルダ構造の下のファイルを更新するためにジップ?

ありがとうございます。

答えて

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'); 
+0

こんにちは持つ単一のステップで両方を行うことができ、あなたは返信用 感謝、意図したとおりに働いた: $ obj-> updateMember( 'ns/adapt/node.ndf'、 'node.ndf'); –

関連する問題