-
-
Save azizimusa/82c2bb9d10940ecc1bb7f950874dbc22 to your computer and use it in GitHub Desktop.
Unzip utility for Android
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.BufferedOutputStream; | |
import java.io.File; | |
import java.io.FileInputStream; | |
import java.io.FileOutputStream; | |
import java.io.IOException; | |
import java.util.zip.ZipEntry; | |
import java.util.zip.ZipInputStream; | |
/** | |
* This utility extracts files and directories of a standard zip file to | |
* a destination directory. | |
* @author www.codejava.net | |
* | |
*/ | |
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