You would be using the following four classes from the java.util.zip package to work with the ZIP file format:
ZipEntry ZipInputStream ZipOutputStream ZipFile
ZipEntry represents an entry in a ZIP file.
If you have archived 10 files in a file called test.zip, each file in the archive is represented by a ZipEntry.
ZipInputStream reads data from a ZIP file for each entry.
ZipOutputStream writes data to a ZIP file for each entry.
ZipFile reads the entries from a ZIP file.
You can use either the ZipInputStream class or the ZipFile class when reading entries from a ZIP file.
The following code shows how to create a ZIP file.
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.Deflater; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class Main { public static void main(String[] args) { String zipFileName = "ziptest.zip"; String[] entries = new String[2]; entries[0] = "test1.txt"; entries[1] = "notes" + File.separator + "test2.txt"; zip(zipFileName, entries);//from ww w. jav a 2s. c o m } public static void zip(String zipFileName, String[] zipEntries) { String currentDirectory = System.getProperty("user.dir"); try (ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream(zipFileName)))) { // Set the compression level to best compression zos.setLevel(Deflater.BEST_COMPRESSION); // Add each entry to the ZIP file for (int i = 0; i < zipEntries.length; i++) { // Make sure the entry file exists File entryFile = new File(zipEntries[i]); if (!entryFile.exists()) { System.out.println("The entry file " + entryFile.getAbsolutePath() + " does not exist"); System.out.println("Aborted processing."); return; } // Create a ZipEntry object ZipEntry ze = new ZipEntry(zipEntries[i]); // Add zip entry object to the ZIP file zos.putNextEntry(ze); // Add the contents of the entry to the ZIP file addEntryContent(zos, zipEntries[i]); // We are done with the current entry zos.closeEntry(); } System.out.println("Output has been written to " + currentDirectory + File.separator + zipFileName); } catch (IOException e) { e.printStackTrace(); } } public static void addEntryContent(ZipOutputStream zos, String entryFileName) throws IOException, FileNotFoundException { // Create an input stream to read data from the entry file BufferedInputStream bis = new BufferedInputStream(new FileInputStream( entryFileName)); byte[] buffer = new byte[1024]; int count = -1; while ((count = bis.read(buffer)) != -1) { zos.write(buffer, 0, count); } bis.close(); } }