2011-03-19 6 views
11

자바 프로그램에서 zip 파일을 만들어야합니다.Zip 파일로 작업 할 자바 라이브러리

나는 zip 파일을 생성하고 텍스트와 파일의 항목을 저장할 수있는 라이브러리가 필요하며 가장 중요한 것은 그 안에 전체 디렉토리를 저장할 수 있어야한다는 것입니다 (다른 디렉토리의 여러 레벨을 가진 디렉토리 각각에 파일이 있음).

저에게 제안 해 주실 수 있습니까?

답변

9
Zip 파일 (즉, 압축) 처리의 어려운 부분을 수행하는 라이브러리는 자바 SE에 바로 내장되어

(java.util.zip) : 당신의 높은 수준의 기능에 대한

http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/package-summary.html

이되지 않을 것 일부 기능을 재귀 적으로 디렉토리를 통과하고 파일을 ZipOutputStream에 복사하기가 어렵습니다 - 아마도 50 줄 미만의 코드입니다.

http://www.javareference.com/jrexamples/viewexample.jsp?id=108에 좋은 예가 있습니다. 단일 파일을 처리하는 데 약간의 작업이 필요합니다.

+0

그러나 java.util.zip은 전체 디렉토리를 저장할 수 없으므로 직접 작성해야합니다! – RYN

+0

사실, 당신은 디렉토리 구조를 횡단하고'ZipOutputStream' 자신에게 물건을 덤프해야 할 것입니다. – Alnitak

+0

btw, 그 예제는 borked입니다. 디렉토리에있는 파일을 적절하게 반복하지 않는 것과 같은 주요 컴파일 문제가 있습니다. – stevebot

4

일반적으로 Apache (또는 더 구체적으로는 Apache Commons)에서 고려해야 할 사항이 있습니다. 나는 이것을 찾았다 : http://commons.apache.org/compress/zip.html (나는 그것을 체크하지 않았다).

+0

"더 나은"zip 파일을 만드는 것만 보이고, 디렉토리 트래버 설 또는 실제로 디스크 파일에서 zip 파일로 복사하는 모든 것. – Alnitak

21

체크 아웃 Zip4j은 - http://www.lingala.net/zip4j/

오늘은이 문제로 실행했는데 내가 JDK는 우리가하고 싶어 그런 낮은 수준의 쓰레기을 거부합니다. 희망이 작은 도서관은 유명한 7zip 라이브러리의 결합은 자바가

+2

Maven을 통해서도 availble을 사용할 수 있습니다. http://mvnrepository.com/artifact/net.lingala.zip4j/zip4j – ripper234

3

작동합니다, 당신은 http://sevenzipjbind.sourceforge.net/

+0

7zip은 zip과 동일하지 않습니다. – Alnitak

+6

7zip 라이브러리의 Java 바인딩은 개인적인 경험을 통해 Zip, GZip, RAR 및 기타 형식 (읽기 및 쓰기 용) –

1

easyzip4j

에서 확인해 GitHub의에서 다운로드 할 수 있습니다.

https://github.com/willwarren/easyzip4j/downloads

사용은

EasyZip.zip("./folderToZip", "./myZipFile.zip"); 

또는

이 (또한 추가 정보 https://github.com/willwarren/easyzip4j/blob/master/README.md에 포함)

EasyZip.zip("./folderToZip", "./myZipFile.zip", 
    new EasyZipParameters().setZipFolderContentsNotFolder(true)); 

은 받는다는 기반 프로젝트입니다.
commons-io 및 log4j에 따라 다릅니다. 자유롭게 편집하십시오!

4

체크 아웃 수있는 또 다른 옵션은 https://github.com/zeroturnaround/zt-zip

에서 메이븐 중앙 및 프로젝트 페이지에서 제공 ZT-우편이다 그것에는 표준 패킹 (파일 시스템 스트림에와에) 포장을 풀고 기능 + 헬퍼 메소드를 많이 아카이브의 파일을 테스트하거나 항목을 추가/제거합니다.

+0

종속성이 너무 많습니다.하지만 멋진 코드입니다. – marcolopes

+0

현재 유일한 의존성은 org.slf4j.slf4j-api입니다. – toomasr

관련 문제