package edu.harvard.iq.dataverse.util; import java.util.List; 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; /** * Convenience class to create a zip file, used by ShapefileHandler * * source: http://www.avajava.com/tutorials/lessons/how-can-i-create-a-zip-file-from-a-set-of-files.html * * * */ public class ZipMaker{ private static boolean DEBUG = false; public static void main(String[] args){ } public ZipMaker(List<String> filenames, String inputDirname, String outputZipFilename){ try { FileOutputStream fos = new FileOutputStream(outputZipFilename); ZipOutputStream zip_output_stream = new ZipOutputStream(fos); for(String fname: filenames){ String fullpath = new String(inputDirname + '/' + fname); addToZipFile(fname, fullpath, zip_output_stream); } zip_output_stream.close(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void addToZipFile(String fileName, String fullFilepath, ZipOutputStream zip_output_stream) throws FileNotFoundException, IOException { if (DEBUG){ System.out.println("Writing '" + fileName + "' to zip file"); } File file = new File(fullFilepath); FileInputStream file_input_stream = new FileInputStream(file); ZipEntry zipEntry = new ZipEntry(fileName); zip_output_stream.putNextEntry(zipEntry); byte[] bytes = new byte[1024]; int length; while ((length = file_input_stream.read(bytes)) >= 0) { zip_output_stream.write(bytes, 0, length); } zip_output_stream.closeEntry(); file_input_stream.close(); } }