Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class ZipUtils {
/**
* @param source zip stream
* @param target target directory
* @throws IOException extraction failed
*/
public static void unzip(InputStream source, File target) throws IOException {
final ZipInputStream zipStream = new ZipInputStream(source);
ZipEntry nextEntry;
while ((nextEntry = zipStream.getNextEntry()) != null) {
final String name = nextEntry.getName();
// only extract files
if (!name.endsWith("/")) {
final File nextFile = new File(target, name);
// create directories
final File parent = nextFile.getParentFile();
if (parent != null) {
parent.mkdirs();
}
// write file
try (OutputStream targetStream = new FileOutputStream(nextFile)) {
copy(zipStream, targetStream);
}
}
}
}
private static void copy(final InputStream source, final OutputStream target) throws IOException {
final int bufferSize = 4 * 1024;
final byte[] buffer = new byte[bufferSize];
int nextCount;
while ((nextCount = source.read(buffer)) >= 0) {
target.write(buffer, 0, nextCount);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.