package com.amazonaws.eclipse.codedeploy.deploy.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.IOUtils;
public class ZipUtils {
public static void createZipFileOfDirectory(File srcDir, File zipOutput) throws IOException {
if ( !srcDir.isDirectory() ) {
throw new IllegalArgumentException(
srcDir.getAbsolutePath() + " is not a directory!");
}
ZipOutputStream zipOutputStream = null;
String baseName = srcDir.getAbsolutePath() + File.pathSeparator;
try {
zipOutputStream = new ZipOutputStream(new FileOutputStream(zipOutput));
addDirToZip(srcDir, zipOutputStream, baseName);
} finally {
IOUtils.closeQuietly(zipOutputStream);
}
}
private static void addDirToZip(File dir, ZipOutputStream zip, String baseName) throws IOException {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
addDirToZip(file, zip, baseName);
} else {
String entryName = file.getAbsolutePath().substring(
baseName.length());
ZipEntry zipEntry = new ZipEntry(entryName);
zip.putNextEntry(zipEntry);
FileInputStream fileInput = new FileInputStream(file);
try {
IOUtils.copy(fileInput, zip);
zip.closeEntry();
} finally {
IOUtils.closeQuietly(fileInput);
}
}
}
}
}