-
JAVA | 파일 압축(zip) 하기▼ Backend/자바 (JAVA) 2022. 6. 7. 12:04반응형
java.util.zip
자바에서 기본적으로 제공하는 해당 패키지를 이용하여 파일의 zip 압축 및 해제 할 수 있다.
구성환경
Windows 10, IntelliJ IDEA 2022.1.2, Java 1.8
파일 압축 예제
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class CompressUtil { public void compressZip() throws Exception { // 압축 할 파일들의 경로 지정 String fileFolder = "C:\\Users\\NB061\\IdeaProjects\\files\\"; // 해당 경로에 있는 파일의 파일 객체를 생성 File file1 = new File(fileFolder, "1.pdf"); File file2 = new File(fileFolder, "2.pdf"); File file3 = new File(fileFolder, "test.png"); // 파일 객체를 담을 ArrayList 객체를 생성 List<File> files = new ArrayList<>(); // 파일 객체를 ArrayList에 담는다. files.add(file1); files.add(file2); files.add(file3); // 압축 될 zip 파일의 경로 지정 String zipFolder = "C:\\Users\\NB061\\Downloads\\"; // demo.zip 이름으로 파일 객체를 생성 File zipFile = new File(zipFolder, "demo.zip"); // Stream에 사용 할 byte 지정 byte[] buf = new byte[4096]; // zip 파일 형식으로 파일을 쓰기 위한 출력 스트림 필터를 구현하여 demo.zip 파일 생성 try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))) { // 파일 객체 리스트로 loop for (File file : files) { // 파일 객체를 통해 FileInputStream 객체 생성 try (FileInputStream in = new FileInputStream(file)) { // 압축 되어지는 파일의 파일명을 지정 ZipEntry ze = new ZipEntry(file.getName()); // 새 ZIP 파일 항목 쓰기를 시작하고 항목 데이터의 시작에 스트림을 배치 out.putNextEntry(ze); int len; // FileInputStream을 통해 파일 데이터를 읽어들여 ZipOutputStream으로 생성된 zip 파일에 write while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } // 현재 ZIP 항목을 닫고 다음 항목을 쓸 수 있도록 스트림을 배치 out.closeEntry(); } } } } }
테스트
압축이 될 대상의 파일 목록 코드내에서 설정한 다운로드 경로에 zip 파일 생성 지정한 파일들만 demo.zip 이름으로 압축 파일 생성 Download
압축 해제 예제
Reference
반응형'▼ Backend > 자바 (JAVA)' 카테고리의 다른 글
JAVA | 압축(zip)파일 해제하기 (0) 2022.06.07 JAVA | try-with-resource, 자원을 자동으로 해제 (0) 2021.12.13 JAVA | JVM(Java Virtual Machine) 이란 (0) 2021.12.10 JAVA | 파일 다운로드 구현하기 (0) 2021.09.30 JAVA | 파일 업로드 구현하기 (0) 2021.09.29