이 기사는 주로 파일이나 폴더를 압축하기 위해 Java 관련 클래스를 사용하는 것을 소개합니다.
Zlib은 순수한 데이터를 처리하도록 설계된 데이터 압축 라이브러리입니다 (데이터 소스에 관계없이).
7Z는 현재 압축 비율이 가장 높은 새로운 압축 형식입니다.
GZIP는 파일 압축 도구 (또는 압축 도구에서 생성 된 압축 파일 형식)이며 개별 파일을 처리하도록 설계되었습니다. gzip은 파일에서 데이터를 Zipping 할 때 zlib을 사용합니다. 파일 속성과 관련된 정보를 저장하기 위해 GZIP는 압축 파일 (*.gz)에 더 많은 헤더 컨텐츠를 저장해야하며 Zlib는이를 고려할 필요가 없습니다. 그러나 gzip은 단일 파일에만 적합하므로 Unix/Linux에서 자주 볼 수있는 접미사는 *.tar.gz 또는 *.tgz입니다. 이는 여러 파일이 먼저 TAR이있는 단일 파일로 패키지 된 다음 GZIP로 압축됩니다.
Zip은 여러 파일을 압축하는 데 적합한 형식입니다 (해당 도구에는 PKZIP 및 WinZIP 등이 포함됩니다). 따라서 ZIP 파일에는 파일 디렉토리 구조에 대한 정보가 추가로 포함되어야하며, 이는 GZIP의 헤더보다 더 많은 정보입니다. 그러나 ZIP 형식은 다양한 압축 알고리즘을 채택 할 수 있습니다. 우리의 일반적인 zip 파일의 대부분은 Zlib 알고리즘을 사용하여 압축되지 않으며 압축 데이터의 형식은 GZIP의 형식과 매우 다릅니다.
따라서 특정 요구에 따라 다른 압축 기술을 선택해야합니다. 데이터를 압축/압축을 억제 해야하는 경우 Zlib로 직접 구현할 수 있습니다. GZIP 형식 파일을 생성하거나 다른 도구의 압축 결과를 압축 해야하는 경우 GZIP 또는 ZIP 및 기타 관련 클래스를 사용하여 처리해야합니다.
Maven 의존성
<pectionency> <groupid> org.apache.commons </groupid> <itifactid> commons-compress </artifactid> <버전> 1.12 </version> </fectionency>
지퍼 형식
public static void zip (문자열 입력, 문자열 출력, 문자열 이름)은 예외 {zipoutputStream out = new ZipoutPutStream (new FileOutputStream (output)); 문자열 [] paths = input.split ( "// |"); file [] files = 새 파일 [paths.length]; 바이트 [] 버퍼 = 새로운 바이트 [1024]; for (int i = 0; i <paths.length; i ++) {files [i] = 새 파일 (paths [i]); } for (int i = 0; i <files.length; i ++) {fileInputStream fis = new FileInputStream (files [i]); if (files.length == 1 && name! = null) {out.putnextentry (new Zipentry (name)); } else {out.putNextEntry (new Zipentry (파일 [i] .getName ())); } int len; // 다운로드 해야하는 파일의 내용을 읽고 ZIP 파일에 포장하는 동안 ((len = fis.read (buffer))> 0) {out.write (buffer, 0, len); } out.closeentry (); fis.close (); } out.close (); } out.close (); } GZIP 패키지
public static void gzip (문자열 입력, 문자열 출력, 문자열 이름)은 예외 {string compress_name = null; if (name! = null) {compress_name = name; } else {compress_name = 새 파일 (input) .getName (); } byte [] buffer = 새로운 바이트 [1024]; {gzipparameters gp = new Gzipparameters (); // 압축 파일에서 파일 이름을 설정했습니다 gp.setfilename (compress_name); gzipcompressoroutOutputStream GCOS = 새로운 GZIPCOPLESOROUTPUTSTREAM (new FileOutputStream (output), GP); fileInputStream fis = 새로운 fileInputStream (입력); int 길이; while ((길이 = fis.read (buffer))> 0) {gcos.write (버퍼, 0, 길이); } fis.close (); gcos.finish (); } catch (ioexception ioe) {ioe.printstacktrace (); }} 7Z 팩
public static void z7z (문자열 입력, 문자열 출력, 문자열 이름) 예외 {try {sevenzoutputfile sevenzoutput = new sevenzoutputfile (새 파일 (output)); SevenZarchiveEntry entry = null; 문자열 [] paths = input.split ( "// |"); file [] files = 새 파일 [paths.length]; for (int i = 0; i <paths.length; i ++) {files [i] = 새 파일 (paths [i] .trim ()); } for (int i = 0; i <files.length; i ++) {bufferedInputStream input = null; enter = new bufferedInputStream (new FileInputStream (paths [i])); if (name! = null) {entry = 7zoutput.createarchiveEntry (새 파일 (paths [i]), 이름); } else {enther = sevence = 7zoutput.createarchiveEntry (새 파일 (paths [i]), 새 파일 (paths [i]). getName ()); } SevenZoutput.putArciveEntry (Entry); 바이트 [] 버퍼 = 새로운 바이트 [1024]; int len; while ((len = enterstream.read (buffer))> 0) {sevenzoutput.write (buffer, 0, len); } enter.close (); SevenZoutput.closearchiveEntry (); } sevenzoutput.close (); } sevenzoutput.close (); } catch (ioexception ioe) {System.out.println (ioe.toString () + "" + input); }} Zlib 패키지
public static void zlib (String Input, String Output) 예외 {// deflateroutputStream dos = new deflaterOutputStream (new FileOutputStream (output)); deflateparameters dp = new deflateparameters (); dp.setwithzlibheader (true); deflatecompressorOutStream DCOS = New deflateCompressorOututputStream (new FileOutputStream (output), dp); fileInputStream fis = 새로운 fileInputStream (입력); int length = (int) 새 파일 (입력) .length (); 바이트 데이터 [] = 새로운 바이트 [길이]; // int 길이; while ((길이 = fis.read (data))> 0) {dcos.write (data, 0, length); } fis.close (); dcos.finish (); dcos.close (); }이 기사가 도움이되기를 바랍니다. 이는 Zip, GZIP, 7Z 및 Zlib 형식의 Java 구현의 압축 및 포장 내용을 소개하는 것입니다. 모두가 우리 웹 사이트를 계속 따르기를 바랍니다! Java를 배우고 싶다면이 웹 사이트를 계속 팔로우 할 수 있습니다.