Intro
This example will demonstrates how to compress a directory recursively using ZipEntry class in the java.util.zip package.
Example
package com.freesamplecode.java.zip; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipDirectoryDemo { public static void main(String[] args){ String directory = "D:/temp/data"; String zipFile = "D:/temp/data.zip"; ZipDirectoryDemo demo = new ZipDirectoryDemo(); demo.zipDirectory(directory, zipFile); } private void zipDirectory(String dir, String zipFile){ File directory = new File(dir); //get all files in the directory File[] listOfFiles = directory.listFiles(); try { FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos); for(int i = 0; i < listOfFiles.length; i++){ File file = listOfFiles[i]; String absolutePath = file.getAbsolutePath(); System.out.println("Adding file "+file.getAbsolutePath()+" to zip"); ZipEntry zipEntry = new ZipEntry(absolutePath); zos.putNextEntry(zipEntry); FileInputStream fis = new FileInputStream(absolutePath); byte[] buffer = new byte[1024]; int length = 0; while((length = fis.read(buffer)) > 0){ zos.write(buffer); } zos.closeEntry(); fis.close(); } System.out.println("Zip processing completed"); zos.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } }
Output
Adding file D:\temp\data\aku - Copy (2).txt to zip Adding file D:\temp\data\aku - Copy (3).txt to zip Adding file D:\temp\data\aku - Copy (4).txt to zip Adding file D:\temp\data\aku - Copy (5).txt to zip Adding file D:\temp\data\aku - Copy.txt to zip Adding file D:\temp\data\aku.txt to zip Zip processing completed
0 comments: