2009年6月5日

Apache Commons Compress Adds file to an existing Zip file

Apache Commons Compress

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.ArchiveOutputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.changes.ChangeSet;
import org.apache.commons.compress.changes.ChangeSetPerformer;

public class Main {

public static void main(String[] args) throws Exception {
File archiveFile = new File(args[0]);
File addFile = new File(args[1]);
String archiverName = "zip";
File tempFile = File.createTempFile(archiveFile.getName(), ".tmp");

ArchiveStreamFactory asf = new ArchiveStreamFactory();

FileInputStream fis = new FileInputStream(archiveFile);
ArchiveInputStream ais = asf.createArchiveInputStream(archiverName, fis);

FileOutputStream fos = new FileOutputStream(tempFile);
ArchiveOutputStream aos = asf.createArchiveOutputStream(archiverName, fos);

FileInputStream addfis = new FileInputStream(addFile);
try {
ChangeSet cs = new ChangeSet();
ArchiveEntry entry = aos.createArchiveEntry(addFile, addFile.getName());

cs.add(entry, addfis, true);
ChangeSetPerformer performer = new ChangeSetPerformer(cs);
performer.perform(ais, aos);
} finally {
addfis.close();
ais.close();
aos.close();
fis.close();
fos.close();
}
archiveFile.delete();
tempFile.renameTo(archiveFile);
}

}

沒有留言:

網誌存檔