Created
November 26, 2015 18:13
-
-
Save kodyzrodlowe/e8ce12c3740c679f32ad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
import java.util.zip.ZipEntry; | |
import java.util.zip.ZipInputStream; | |
public class UnzipUtility | |
{ | |
/** | |
* Size of the buffer to read/write data | |
*/ | |
private static final int BUFFER_SIZE = 4096; | |
/** | |
* Extracts a zip file specified by the zipFilePath to a directory specified by | |
* destDirectory (will be created if does not exists) | |
* @param zipFilePath | |
* @param destDirectory | |
* @throws IOException | |
*/ | |
public void unzip(String zipFilePath, String destDirectory) throws IOException | |
{ | |
File destDir = new File(destDirectory); | |
if (!destDir.exists()) { | |
destDir.mkdir(); | |
} | |
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath)); | |
ZipEntry entry = zipIn.getNextEntry(); | |
// iterates over entries in the zip file | |
while (entry != null) { | |
String filePath = destDirectory + File.separator + entry.getName(); | |
if (!entry.isDirectory()) { | |
// if the entry is a file, extracts it | |
extractFile(zipIn, filePath); | |
} else { | |
// if the entry is a directory, make the directory | |
File dir = new File(filePath); | |
dir.mkdir(); | |
} | |
zipIn.closeEntry(); | |
entry = zipIn.getNextEntry(); | |
} | |
zipIn.close(); | |
} | |
/** | |
* Extracts a zip entry (file entry) | |
* @param zipIn | |
* @param filePath | |
* @throws IOException | |
*/ | |
private void extractFile(ZipInputStream zipIn, String filePath) throws IOException | |
{ | |
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath)); | |
byte[] bytesIn = new byte[BUFFER_SIZE]; | |
int read = 0; | |
while ((read = zipIn.read(bytesIn)) != -1) { | |
bos.write(bytesIn, 0, read); | |
} | |
bos.close(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment