티스토리 뷰

들어가며

  • 기존에 Apache Commons 라이브러리를 통해서 Zip 압축 기능을 구현했는데 파일을 각각 ZipArchiveEntry로 추가해줘야 하는 방식이었다.
public long compressZip(List<File> fileList, File targetFile) throws IOException {
    try (ZipArchiveOutputStream zos = new ZipArchiveOutputStream(new FileOutputStream(targetFile))) {
      int readSize;
      byte[] buf = new byte[BUFFER_SIZE];
      for (File file : fileList) {
        ZipArchiveEntry ze = new ZipArchiveEntry(file.getName());
        zos.putArchiveEntry(ze);
        try (FileInputStream fis = new FileInputStream(file)) {
          while ((readSize = fis.read(buf, 0, buf.length)) >= 0) {
            zos.write(buf, 0, readSize);
          }
          zos.closeArchiveEntry();
        }
      }
    }
    return targetFile.length();
  }
}
  • 폴더 자체를 한번에 Zip으로 묶어주고 싶은데 파일을 전부 가져오려 하니 번거로움이 이만저만이 아니었다.
  • 그래서 폴더 자체를 Zip으로 묶어주는 라이브러리를 찾아 공유하고자 한다.

방법

ZipUtil 사용

  • ZipUtil 라이브러리는 폴더 자체를 Zip으로 묶을 수 있는 기능을 제공한다.
  • 예제 코드
  public void compressZip(File sourceDir, File targetZipFile) {
    ZipUtil.pack(sourceDir, targetZipFile);
  }

참고

 

how to zip a folder itself using java

Suppose I have the following directory structure. D:\reports\january\ Inside january there are suppose two excel files say A.xls and B.xls. There are many places where it has been written about...

stackoverflow.com


끝으로

이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏

광고 클릭은 많은 힘이 됩니다!

반응형
댓글