Listing The Content Of Zip File With Zip Information In Java

The main objective of this tutorial is to show how to list  the content of a zip file along with zipping information. The program shows you:

  • How to iterate through the list of content of a zip file
  • How to get the name of the individual zip entry
  • How to get the compressed file size of an individual zip entry
  • How to get the uncompressed file size of an individual zip entry
  • How to obtain the CRC information of a zip entry
  • How to convert the long CRC information into hex format
  • How to obtain the comments of the individual zip entry.
  • Also note that since this tutorial tells you how to get the compressed file size and uncompressed file size, you can calculate the zip ratio yourself.
/**
 * @author Kushal Paudyal
 * www.sanjaal.com/java
 * Last Modified On 05-15-2009
 */
package com.kushal.utils;

import java.io.IOException;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 * Demonstrates the ability to display the contents of a zip file Also
 * demonstrates how to get the zip info like compressed size, CRC etc.
 */
public class ZipContentDisplay {

	/**
	 * This method takes the zipfile name input parameter Then lists the content
	 * of the zip file.
	 */
	public static void listContentsOfZipFile(String zipFileName) {

		try {
			ZipFile myZipFile = new ZipFile(zipFileName);
			Enumeration zipEntries = myZipFile.entries();

			ZipEntry zipEntry = null;

			while (zipEntries.hasMoreElements()) {
				zipEntry = (ZipEntry) zipEntries.nextElement();
				System.out.println(zipEntry.getName());
			}

		} catch (IOException ex) {
			ex.printStackTrace();
		}

	}

	public static void listContentsOfZipFileWithInfo(String zipFileName) {

		try {
			ZipFile myZipFile = new ZipFile(zipFileName);
			Enumeration zipEntries = myZipFile.entries();

			ZipEntry zipEntry = null;

			while (zipEntries.hasMoreElements()) {
				zipEntry = (ZipEntry) zipEntries.nextElement();
				/**
				 * Get the file name
				 */
				String nameOfEntry = zipEntry.getName();
				/**
				 * Get Compressed File Size
				 */
				long compressedSizeOfEntry = zipEntry.getCompressedSize();
				/**
				 * Get Uncompressed file size
				 */
				long uncompressedSizeOfEntry = zipEntry.getSize();
				/**
				 * Get the CRC Code. Note that we have converted to hex.
				 */
				String crc = Long.toHexString(zipEntry.getCrc());
				/**
				 * Get the comment for the zip entry
				 */
				String comment = zipEntry.getComment();

				/**
				 * Display the result
				 */
				System.out.println("FileName: " + nameOfEntry
						+ "nCompressed Size(B): " + compressedSizeOfEntry
						+ "nOriginal Size(B): " + uncompressedSizeOfEntry
						+ "nCRC :" + crc + "nComments: " + comment);
				System.out.println("***");
			}

		} catch (IOException ex) {
			ex.printStackTrace();
		}

	}

	public static void main(String[] args) {

		String zipFileName = "C:/Temp/abc.zip";
		System.out.println("***Zip Content Display (File Names Only)***n");
		listContentsOfZipFile(zipFileName);

		System.out
				.println("nn***Zip Content Display (Detailed Information)***n");
		listContentsOfZipFileWithInfo(zipFileName);

	}
}

———————————————
Sample Output of this program (depends on your input zip file)

***Zip Content Display (File Names Only)***

abc/
abc/20090511_Files/
abc/20090511_Files/continuum.txt
abc/20090511_Files/custtemp.txt
abc/20090511_Files/depdoc.txt
abc/20090511_Files/librarylog.txt
abc/20090511_Files/logtemp.txt
abc/20090511_Files/sfmlog.txt

***Zip Content Display (Detailed Information)***

FileName: abc/
Compressed Size(B): 0
Original Size(B): 0
CRC :0
Comments: null
***
FileName: abc/20090511_Files/
Compressed Size(B): 0
Original Size(B): 0
CRC :0
Comments: null
***
FileName: abc/20090511_Files/continuum.txt
Compressed Size(B): 592
Original Size(B): 1568
CRC :36bc742
Comments: null
***
FileName: abc/20090511_Files/custtemp.txt
Compressed Size(B): 808
Original Size(B): 2052
CRC :ce0100bb
Comments: null
***
FileName: abc/20090511_Files/depdoc.txt
Compressed Size(B): 230
Original Size(B): 330
CRC :adad0544
Comments: null
***
FileName: abc/20090511_Files/librarylog.txt
Compressed Size(B): 210
Original Size(B): 491
CRC :2b1bab39
Comments: null
***
FileName: abc/20090511_Files/logtemp.txt
Compressed Size(B): 93
Original Size(B): 257
CRC :7e89e401
Comments: null
***
FileName: abc/20090511_Files/sfmlog.txt
Compressed Size(B): 2142
Original Size(B): 7763
CRC :f2931100
Comments: null
***

———————————————–
The following is the snapshot of the zip file as seen through winzip application: