package org.jbake.app; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; /** * Provides Zip file related functions * * @author Jonathan Bullock <a href="mailto:jonbullock@gmail.com">jonbullock@gmail.com</a> * */ public class ZipUtil { /** * Extracts content of Zip file to specified output path. * * @param is {@link InputStream} InputStream of Zip file * @param outputFolder folder where Zip file should be extracted to * @throws IOException if IOException occurs */ public static void extract(InputStream is, File outputFolder) throws IOException { ZipInputStream zis = new ZipInputStream(is); ZipEntry entry; byte[] buffer = new byte[1024]; while ((entry = zis.getNextEntry()) != null) { File outputFile = new File(outputFolder.getCanonicalPath() + File.separatorChar + entry.getName()); File outputParent = new File(outputFile.getParent()); outputParent.mkdirs(); if (entry.isDirectory()) { if (!outputFile.exists()) { outputFile.mkdir(); } } else { FileOutputStream fos = new FileOutputStream(outputFile); int len; while ((len = zis.read(buffer)) > 0) { fos.write(buffer, 0, len); } fos.close(); } } } }