Lets learn how to unzip a file using java.The java.util.zip package provides classes for data compression and decompression. Decompressing a ZIP file is a matter of reading data from an input stream. The java.util.zip package provides a ZipInputStream class for reading ZIP files. A ZipInputStream can be created just like any other input stream. For example, the following segment of code can be used to create an input stream for reading data from a ZIP file format:
FileInputStream fis = new FileInputStream("figs.zip");
ZipInputStream zin = new
ZipInputStream(new BufferedInputStream(fis));
Once a ZIP input stream is opened, you can read the zip entries using the getNextEntry method which returns a ZipEntry object. If the end-of-file is reached, getNextEntry returns null:
ZipEntry entry;
while((entry = zin.getNextEntry()) != null) {
// extract data
// open output streams
}
Now, it is time to set up a decompressed output stream, which can be done as follows:
int BUFFER = 2048;
FileOutputStream fos = new
FileOutputStream("dest dirPath"+entry.getName());
BufferedOutputStream dest = new
BufferedOutputStream(fos, BUFFER);
In this segment of code, a file output stream is created using the entry's name, which can be retrieved using the entry.getName method. Source zipped data is then read and written to the decompressed stream:
while ((count = zin.read(data, 0, BUFFER)) != -1) {
//System.out.write(x);
dest.write(data, 0, count);
}
dest.close();
And finally, close the input stream:
zin.close();
The following source code shows how to decompress and extract files from a ZIP archive.
import java.io.*; import java.util.zip.*; public class UnZip { final static int BUFFER = 2048; /** * Command line arguments : * argv[0]-----> Source zip file. * argv[1]-----> Destination directory. **/ public static void main(String argv[]) { try { /** create a ZipInputStream object. **/ FileInputStream fis = new FileInputStream(argv[0]); ZipInputStream zis = new ZipInputStream( new BufferedInputStream(fis)); ZipEntry entry; /** Read the zip entries using the getNextEntry method **/ while ((entry = zis.getNextEntry()) != null) { System.out.println("Extracting: " + entry.getName()); /** If the entry is a directory, create the directory. **/ if (entry.isDirectory()) { File f = new File(argv[1] + entry.getName()); f.mkdirs(); } /** * If the entry is a file,write the decompressed file to the * disk and close destination stream. **/ else { int count; byte data[] = new byte[BUFFER]; FileOutputStream fos = new FileOutputStream(argv[1] + entry.getName()); BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER); while ((count = zis.read(data, 0, BUFFER)) != -1) { dest.write(data, 0, count); } dest.close(); } } /** close the input stream **/ zis.close(); System.out.println("unzip completed successfully!!"); } catch (Exception e) { e.printStackTrace(); } } }
Unzip File Using ZipFile in Java
The unzip can also be performed using java.util.zip.ZipFile class.Please visit Unzip File Using ZipFile in Java to learn more about it.
No comments:
Post a Comment