package org.jabox.utils;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Unzip {
private static final Logger LOGGER = LoggerFactory
.getLogger(Unzip.class);
public static void unzip(final File zipFile, final File baseDir)
throws IOException {
InputStream in = null;
ZipInputStream zin = null;
try {
in = new BufferedInputStream(new FileInputStream(zipFile));
zin = new ZipInputStream(in);
ZipEntry e;
while ((e = zin.getNextEntry()) != null) {
if (!e.isDirectory()) {
unzip(zin, baseDir, e.getName());
}
}
} finally {
if (zin != null)
zin.close();
if (in != null)
in.close();
}
}
public static void unzip(final ZipInputStream zin, final File baseDir,
final String entry) throws IOException {
File file = new File(baseDir, entry);
LOGGER.info("unzipping " + file.getAbsolutePath());
file.getParentFile().mkdirs();
file.setExecutable(true);
FileOutputStream out = new FileOutputStream(file);
byte[] b = new byte[512];
int len = 0;
while ((len = zin.read(b)) != -1) {
out.write(b, 0, len);
}
out.close();
}
}