package org.ukiuni.pacifista.util; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ZipUtil { public static void unzip(File srcFile, File saveDirectory) throws IOException { FileInputStream in = new FileInputStream(srcFile); unzip(in, saveDirectory); } public static void unzip(InputStream in, File saveDirectory) throws IOException { ZipInputStream zipIn = new ZipInputStream(in); ZipEntry ze = zipIn.getNextEntry(); while (null != ze) { File outFile = new File(saveDirectory, ze.getName()); if (ze.isDirectory()) { outFile.mkdirs(); } else { BufferedOutputStream bos = null; try { bos = new BufferedOutputStream(new FileOutputStream(outFile)); IOUtil.copy(zipIn, bos); } finally { IOUtil.close(bos); } } ze = zipIn.getNextEntry(); } IOUtil.close(zipIn); } public static void zip(File srcDir, OutputStream out) throws IOException { ZipOutputStream zipOut = new ZipOutputStream(out); zip(srcDir.getParentFile(), srcDir, zipOut); } public static void zip(File rootDir, File src, ZipOutputStream zipOut) throws IOException { if (src.isFile()) { FileInputStream in = new FileInputStream(src); ZipEntry ze = new ZipEntry(src.getAbsolutePath().substring(rootDir.getAbsolutePath().length() + 1)); zipOut.putNextEntry(ze); IOUtil.copy(in, zipOut); zipOut.closeEntry(); } else if (src.isDirectory()) { for (File file : src.listFiles()) { zip(rootDir, file, zipOut); } } } }