create a zip file java code example

Example 1: zip file java

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipCompress {
    public static void compress(String dirPath) {
        final Path sourceDir = Paths.get(dirPath);
        String zipFileName = dirPath.concat(".zip");
        try {
            final ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(zipFileName));
            Files.walkFileTree(sourceDir, new SimpleFileVisitor<Path>() {
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) {
                    try {
                        Path targetFile = sourceDir.relativize(file);
                        outputStream.putNextEntry(new ZipEntry(targetFile.toString()));
                        byte[] bytes = Files.readAllBytes(file);
                        outputStream.write(bytes, 0, bytes.length);
                        outputStream.closeEntry();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    return FileVisitResult.CONTINUE;
                }
            });
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Example 2: 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