123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 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<String> 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);
- }
- }
|