package com.googlecode.totallylazy.io; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Date; import java.util.jar.JarOutputStream; import java.util.zip.ZipOutputStream; public class ZipDestination implements Destination { private final ZipOutputStream zipOutputStream; private ZipDestination(final ZipOutputStream zipOutputStream) { this.zipOutputStream = zipOutputStream; } public static ZipDestination zipDestination(OutputStream outputStream) { return new ZipDestination(outputStream instanceof ZipOutputStream ? (ZipOutputStream) outputStream : new ZipOutputStream(outputStream)); } public static ZipDestination jarFile(File jarFile) throws IOException { return zipDestination(new JarOutputStream(new FileOutputStream(jarFile))); } @Override public OutputStream destination(String name, Date modified) throws IOException { return new ZipEntryOutputStream(zipOutputStream, name, modified); } @Override public void close() throws IOException { zipOutputStream.close(); } }