1
0

ZipUtils.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package de.nplusc.izc.tools.IOtools;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.zip.ZipEntry;
  9. import java.util.zip.ZipOutputStream;
  10. import org.apache.logging.log4j.LogManager;
  11. import org.apache.logging.log4j.Logger;
  12. public class ZipUtils
  13. {
  14. private static final Logger l = LogManager.getLogger();
  15. private List<String> fileList;
  16. private String OUTPUT_ZIP_FILE ;
  17. private String SOURCE_FOLDER ;
  18. public ZipUtils(String out,String base)
  19. {
  20. fileList = new ArrayList<>();
  21. OUTPUT_ZIP_FILE=out;
  22. SOURCE_FOLDER=base;
  23. l.trace("SOURCE:|"+base);
  24. generateFileList(new File(base));
  25. zipIt(out);
  26. }
  27. public void zipIt(String zipFile)
  28. {
  29. byte[] buffer = new byte[1024];
  30. String source = "";
  31. FileOutputStream fos = null;
  32. ZipOutputStream zos = null;
  33. try
  34. {
  35. fos = new FileOutputStream(zipFile);
  36. zos = new ZipOutputStream(fos);
  37. l.info("Output to Zip : " + zipFile);
  38. FileInputStream in = null;
  39. for (String file : this.fileList)
  40. {
  41. l.trace("file@"+SOURCE_FOLDER+"|"+file);
  42. l.info("File Added : " + file);
  43. ZipEntry ze = new ZipEntry(file);
  44. zos.putNextEntry(ze);
  45. try
  46. {
  47. in = new FileInputStream(SOURCE_FOLDER + File.separator + file);
  48. int len;
  49. while ((len = in.read(buffer)) > 0)
  50. {
  51. zos.write(buffer, 0, len);
  52. }
  53. }
  54. finally
  55. {
  56. in.close();
  57. }
  58. }
  59. zos.closeEntry();
  60. l.info("Folder successfully compressed");
  61. }
  62. catch (IOException ex)
  63. {
  64. ex.printStackTrace();
  65. }
  66. finally
  67. {
  68. try
  69. {
  70. zos.close();
  71. }
  72. catch (IOException e)
  73. {
  74. e.printStackTrace();
  75. }
  76. }
  77. }
  78. public void generateFileList(File node)
  79. {
  80. // add file only
  81. if (node.isFile())
  82. {
  83. fileList.add(generateZipEntry(node.toString()));
  84. }
  85. if (node.isDirectory())
  86. {
  87. String[] subNote = node.list();
  88. for (String filename : subNote)
  89. {
  90. generateFileList(new File(node, filename));
  91. }
  92. }
  93. }
  94. private String generateZipEntry(String file)
  95. {
  96. return FileTK.getRelativePath(file, SOURCE_FOLDER).substring(3);
  97. }
  98. }