오늘은 몇일동안 고생하면서 애를 먹인 자바 파일(폴더) 압축시 한글이 깨지는 현상에 대해서 포스팅을 해볼까 합니다.
다른 블로그의 글을 찾아보고 하라는대로 해봤지만 좀처럼 쉬운게 하나도 없었습니다.
그래서 제가 쉽게 설명해 보겠습니다.
아 맞다.
시작 전에 컴퓨터의 자바 버전을 확인하기 바랍니다. ( cmd 창에서 java - version 으로 확인 )
제 로컬 PC 자바 버전이 1.5였는데 지원이 안되서 1.6으로 상향 했습니다. (자바 버전 1.5에서도 됩니다)
java 1.5 버전 commons-compress 1.8 지원안함
java 1.6 버전 commons-compress 1.8 지원
java 1.7 버전 commons-compress 2.0 지원
* 수정 java 1.5 버전 commons-compress 1.8 지원함 ( common-io 2.4를 지원안함 )
자바에서 제공해주는 java.util.zip.ZipEntry 를 사용할 경우 test.zip 안의 한글 파일명이 깨지는 것을 확인 할 수 있습니다.
아파치에서 제공해주는 org.apache.commons.compress.archivers.zip.ZipArchiveEntry 를 사용할 경우 test.zip 안의 한글 파일명이 정상적으로 보이는 것을 확인 할 수 있습니다.
먼저 commons-compress-1.8.jar, commons-io-2.4.jar 를 다운 받습니다.
개발자 여러분들을 위해서 파일을 올려 놓았습니다.
물론 안전합니다.
불안하시면 직접 아파치 사이트에서 다운 받으시면 됩니다. ( 찾기 힘드실꺼에요 ㅋㅋ )
다운받고 나서부터 시작입니다.
이 jar 파일들을 이클립스 어디에 올려놓고 어떻게 사용하는지 알아야 파일을 압축 할 것 아닙니까?
전자정부 프레임워크에서 메이븐을 사용할 경우 위치입니다.
c드라이브 > 프로젝트명(framework) > bin > maven > install 위치에 jar파일을 복사합니다.
cmd 창을 엽니다.
maven에서 jar 파일을 Build를 할겁니다.
c드라이브 > framwork > bin > apche-maven-2.2.1 > bin 폴더로 이동합니다.
빌드 명령어를 실행합니다.
mvn install:install-file -DgroupId=org.apache.commons -DartifactId=commons-compress
-Dversion=1.8 -Dpackaging=jar -Dfile=C:\framework\bin\maven\install\commons-compress-1.8.jar
메이븐 빌드 명령어를 첨부하였으니 다운 받아서 사용하시면 됩니다.
commons-compress-1.8.jar, commons-io-2.4.jar 두가지 명령어 입니다.
jar 파일들 빌드가 끝났다면
이클립스의 pom.xml 을 수정해야 합니다.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
처음부터 지금까지의 과정이 다 끝났다면
이클립스 was 프로젝트 > 오른쪽마우스 > Run As > Maven build 실행
메이븐 빌드가 다 끝나고 나면 성공이라는 메세지를 확인 할 수 있습니다.
Maven Dependencies에 jar 파일 두개가 포함되있는 것을 확인 할 수 있습니다.
이것으로 설정은 끝났습니다.
//압축을 원하는 위치에서 CompressUtil 메소드 호출
//c드라이브 test폴더의 내용을 압축하여 c드라이브 test.zip으로 압축
CompressUtil.makZipFile(new File("c:\test"), new File("c:\test.zip"));
여러분의 편의를 위해 CompressUtil 파일도 첨부하겠습니다.
commons-compress-1.20.jar 파일도 첨부해 봅니다.
제가 작성한 글이 도움이 되셨다면 ♥공감을 꾹 눌러주세요
도움이 필요한 내용이 있으시다면 댓글도 남겨주세요
자바 최상위 추상 클래스 inputStream (0) | 2020.05.20 |
---|---|
자바에서 리눅스 명령어를 이용한 파일 압축 (0) | 2020.05.14 |
File 클래스란 무엇인가? (1) | 2020.05.11 |
스트림(stream)이란 데이터의 흐름이다. (0) | 2020.05.08 |
예외 상황에는 finally문 사용해 보도록 하자 (0) | 2020.04.29 |