Create Zip File Using ZipEntry and ZipOutputStream in Java

Compress a Whole Directory(including sub files and sub directories)

We can compress Whole Directory including sub files and sub directories using the walk file tree feature of Java NIO

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 CreateZip { 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 &lt Path &gt () {@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(); } } }

Create a zip file of single file

String srcFilename = "C:\\hello.txt"; String zipFile = "C:\\hello.zip"; try { byte[] buffer = new byte[1024]; FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos); File srcFile = new File(srcFilename); FileInputStream fis = new FileInputStream(srcFile); zos.putNextEntry(new ZipEntry(srcFile.getName())); int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } zos.closeEntry(); fis.close(); zos.close(); } catch(IOException ex) { System.out.println("Error while creating zip file : " + ex); } catch(Exception ex) { System.out.println("Error while creating zip file : " + ex); }

In this article, we have seen Create Zip File Using ZipEntry and ZipOutputStream in Java .