Saturday, March 12, 2016

Java ZIP Example : How To Compress Or Zip A Directory Recursively

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

Screenshot

How To Compress Or Zip A Directory Recursively

Related Posts:

0 comments: