728x90
반응형
SMALL
안녕하세요!
프뚜(프로그래머 뚜)입니다!
[개발 환경]
- OS: windows 10 64bit
- JAVA: v1.8
- SpringBoot: v2.7.3
Java에서 파일 압축 소스에 대해 공유하려고 합니다. java에서 제공하는 기본 압축은 속도가 느린 반면에 org.apache.commons.compress.archivers.zip.*에서 제공하는 zip은 좀 더 빠르고 압축률이 좋아서 포스팅합니다.
- 프로젝트 구조
프로젝트명: petoo
- src/main/java/tistory/TestController
- URI: / (GET)
- 프로젝트 > build.gradle
// 2022.09.02[프뚜]: zip 관련된 라이브러리
implementation("org.apache.commons:commons-compress:1.21")
apache에서 제공하는 라이브러리를 연동 합니다.
- 프로젝트 > TestController 소스
// 2022.09.02[프뚜]: 경로
String path = "D:\\";
// 2022.09.02[프뚜]: 파일명
List<String> fileList = new ArrayList();
fileList.add("1.mp4");
fileList.add("2.png");
fileList.add("3.jpg");
// 2022.09.02[프뚜]: 저장할 때 사용하는 사이즈
int size = 1024;
// 2022.09.02[프뚜]: zip 파일 생성 및 encoding
ZipArchiveOutputStream zos = new ZipArchiveOutputStream(new BufferedOutputStream(Files.newOutputStream(Paths.get(path + "petoo.zip"))));
zos.setEncoding("UTF-8");
for (String file : fileList) {
// 2022.09.02[프뚜]: zip파일에 압축될 파일경로와 파일명
FileInputStream fis = new FileInputStream(path + file);
BufferedInputStream bis = new BufferedInputStream(fis, size);
// 2022.09.02[프뚜]: zip파일에 넣음
zos.putArchiveEntry(new ZipArchiveEntry(file));
byte[] buf = new byte[size];
int len;
while ((len = bis.read(buf, 0, size)) != -1) {
zos.write(buf, 0, len);
}
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
파일을 압축할 때 사용하는 코드입니다.
해당 프로젝트는 gitlab에 제공되고 있습니다. (포스팅 제목과 Git History는 1:1 매칭입니다.)
https://github.com/JeongSeongSoo/spring-tistory.git
궁금하신 부분 또는 문제가 생긴 부분에 대해서 댓글 남겨주시면 빠르고 정확한 답변드리겠습니다.
728x90
반응형
LIST
'프로그램 > JAVA' 카테고리의 다른 글
[Windows 10] JAVA 1.8 설치 & JAVA_HOME 세팅하기 (3) | 2022.10.26 |
---|---|
[JAVA] 파일 이름, 경로, 확장자명 나누기 (1) | 2022.10.03 |
[Spring] JAVA 대용량 파일 다운로드 (4) | 2022.09.01 |
[FFMPEG] Windows 10에서 동영상 화질, 확장자 등 변경하기 (JAVA) (3) | 2022.08.24 |
[JWT] 토큰 인증 및 payload 확인 (5) | 2021.11.24 |