2014년 5월 4일 업데이트

압축 풀 때 디렉토리 못찾는 버그 수정해서 다시 올림.

CompressionUtil.java


고친다 고친다 생각만 하다가 오랜만에 로그인한 김에...

-------------------------------------------------------------


java.util.zip.* 관련 클래스를 이용하면 디렉토리나 파일명에 한글이 있을 경우 무참히 깨지며 압축과 해제가 제대로 안된다.

내부적으로 UTF-8 인코딩을 이용해서 스트림을 다루기 때문이라고 하는데, 이때문에 commons-compress 에서 제공하는 컴포넌트를 이용한다.

API는 java.util.zip.* 의 클래스와 거의 유사해서 이용하는데 별도의 학습은 불필요한듯.

아예 아래와 같이 유틸리티 클래스를 만들어두면 더 편하다.

(아래 파일은 압축 풀 때 오류 발생하는 경우 있음. 위에 첨부한 파일이 업데이트 버전입니다.)

CompressionUtil.java


사용방법은 다양한데, 아래와 같이 하면 simple과 하위 디렉토리, 파일을 전부 압축해서 E:/test 밑에 simple.zip 파일을 생성한다.

압축 해제는 다음과 같이 할 경우

E:/test 밑에 압축이 풀린다. 또는 아래와 같이 별도의 디렉토리에 압축을 풀 수도 있다.

이외에 charset 을 지정해주거나 압축시 최상위 디렉토리를 압축 파일에 포함할지, 아니면 최상위 디렉토리의 하위디렉토리부터 압축할지도 선택할 수 있다. 소켓을 통한 스트림 전송을 위해서 OutputStream과 InputStream 을 이용할 수도 있다.


Posted by yeori
,