package de.nplusc.izc.tools.IOtools; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class ZipUtils { private static final Logger l = LogManager.getLogger(); private List fileList; private String OUTPUT_ZIP_FILE ; private String SOURCE_FOLDER ; public ZipUtils(String out,String base) { fileList = new ArrayList<>(); OUTPUT_ZIP_FILE=out; SOURCE_FOLDER=base; l.trace("SOURCE:|"+base); generateFileList(new File(base)); zipIt(out); } public void zipIt(String zipFile) { byte[] buffer = new byte[1024]; String source = ""; FileOutputStream fos = null; ZipOutputStream zos = null; try { fos = new FileOutputStream(zipFile); zos = new ZipOutputStream(fos); l.info("Output to Zip : " + zipFile); FileInputStream in = null; for (String file : this.fileList) { l.trace("file@"+SOURCE_FOLDER+"|"+file); l.info("File Added : " + file); ZipEntry ze = new ZipEntry(file); zos.putNextEntry(ze); try { in = new FileInputStream(SOURCE_FOLDER + File.separator + file); int len; while ((len = in.read(buffer)) > 0) { zos.write(buffer, 0, len); } } finally { in.close(); } } zos.closeEntry(); l.info("Folder successfully compressed"); } catch (IOException ex) { ex.printStackTrace(); } finally { try { zos.close(); } catch (IOException e) { e.printStackTrace(); } } } public void generateFileList(File node) { // add file only if (node.isFile()) { fileList.add(generateZipEntry(node.toString())); } if (node.isDirectory()) { String[] subNote = node.list(); for (String filename : subNote) { generateFileList(new File(node, filename)); } } } private String generateZipEntry(String file) { return FileTK.getRelativePath(file, SOURCE_FOLDER).substring(3); } }