java create zip from directory code example

Example: Java create zip file

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class zip {

    public static void main(String[] args) {
    	zipFolder(mapFolder("Test"));
    	
        System.out.println("Done");
    }
    
	public static List<String> mapFolder(String path, boolean includeEmptyFolders) {
    	List<String> map = new ArrayList<String>();
    	List<String> unmappedDirs = new ArrayList<String>();
    	File[] items = new File(path).listFiles();

    	if (!path.substring(path.length() - 1).equals("/")) {
    		path += "/";
    	}
    		
    	if (items != null) {
	    	for (File item : items) {
	    		if (item.isFile()) {
	    				map.add(path+item.getName());
	    		} else {
	    			unmappedDirs.add(path+item.getName());
	    		}
	    	}
	    	
	    	if (!unmappedDirs.isEmpty()) {
	    		for (String folder : unmappedDirs) {
	    			List<String> temp = mapFolder(folder, includeEmptyFolders);
	    			if (!temp.isEmpty()) {
	    				for (String item : temp)
	    					map.add(item);
    				} else if (includeEmptyFolders == true) {
    					map.add(folder+"/");
    				}
	    		}
	    	}
    	}
    	return map;
    }
    
    public static void zipFolder(String zipPath, List<String> items) {
    	try {
            FileOutputStream f = new FileOutputStream(zipPath);
            ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(f));
            
            for (String item : items) {
            	String contents = String.join("\n", Files.readAllLines(Paths.get(item)));
            	zip.putNextEntry(new ZipEntry(item));
            	
            	byte[] data = contents.getBytes();
            	zip.write(data, 0, data.length);
            	zip.closeEntry();
            }
		    	
            zip.close();
            f.close();
        } catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

Tags:

Java Example