Artikel ini terutama memperkenalkan penggunaan kelas terkait Java untuk mengompres file atau folder.
Zlib adalah pustaka kompresi data yang dirancang untuk memproses data murni (terlepas dari sumber data).
7Z adalah format kompresi baru yang memiliki rasio kompresi tertinggi saat ini.
GZIP adalah alat kompresi file (atau format file terkompresi yang dihasilkan oleh alat kompresi) dan dirancang untuk memproses file individual. GZIP menggunakan zlib saat zip data dalam file. Untuk menyimpan informasi yang terkait dengan properti file, GZIP perlu menyimpan lebih banyak konten header dalam file terkompresi (*.gz), dan Zlib tidak perlu mempertimbangkan ini. Tetapi GZIP hanya cocok untuk satu file, jadi sufiks yang sering kita lihat di UNIX/Linux adalah *.tar.gz atau *.tgz, yang berarti bahwa beberapa file pertama kali dikemas ke dalam satu file dengan tar, dan kemudian dikompres dengan GZIP.
ZIP adalah format yang cocok untuk mengompresi beberapa file (alat yang sesuai termasuk PKZIP dan Winzip, dll.). Oleh karena itu, file zip harus lebih lanjut berisi informasi tentang struktur direktori file, yang lebih banyak informasi daripada header GZIP. Namun, perlu dicatat bahwa format ZIP dapat mengadopsi berbagai algoritma kompresi. Sebagian besar file zip umum kami tidak dikompresi menggunakan algoritma ZLIB, dan format data terkompresi sangat berbeda dari GZIP.
Oleh karena itu, Anda harus memilih teknik kompresi yang berbeda sesuai dengan kebutuhan spesifik Anda: jika Anda hanya perlu mengompres/mendekompresi data, Anda dapat secara langsung mengimplementasikannya dengan Zlib. Jika Anda perlu menghasilkan file format GZIP atau mendekompresi hasil kompresi dari alat lain, Anda harus menggunakan GZIP atau ZIP dan kelas terkait lainnya untuk menanganinya.
Ketergantungan Maven
<dependency> <GroupId> org.apache.Commons </groupId> <ArTifactId> commons-compress </artifactid> <version> 1.12 </version> </dependency>
format zip
public static void zip (input string, output string, name string) melempar pengecualian {zipoutputStream out = new zipoutputStream (fileoutputStream baru (output)); String [] paths = input.split ("// |"); File [] file = file baru [paths.length]; byte [] buffer = byte baru [1024]; untuk (int i = 0; i <paths.length; i ++) {file [i] = file baru (paths [i]); } untuk (int i = 0; i <file if (file.length == 1 && name! = null) {out.putNextEntry (new zipentry (name)); } else {out.putNextEntry (zipEntry baru (file [i] .getName ())); } int len; // Baca konten file yang perlu Anda unduh dan mengemasnya ke dalam file zip sementara ((len = fis.read (buffer))> 0) {out.write (buffer, 0, len); } out.closeEntry (); fis.close (); } out.close (); } out.close (); } Paket GZIP
public static void GZIP (Input String, String Output, String Name) melempar Exception {String compress_name = null; if (name! = null) {compress_name = name; } else {compress_name = file baru (input) .getName (); } byte [] buffer = byte baru [1024]; coba {gzipparameters gp = gzipparameters baru (); // Atur nama file dalam file terkompresi gp.setFileName (compress_name); GzipcompessoroutputStream gcos = GZIPComperoutTutStream baru (output), GP) baru; FileInputStream fis = new fileInputStream (input); panjang int; while ((length = fis.read (buffer))> 0) {gcos.write (buffer, 0, panjang); } fis.close (); gcos.finish (); } catch (ioException IoE) {ioe.printstacktrace (); }} Paket 7z
public static void z7Z (input string, output string, nama string) melempar Exception {coba {SevenZOutputFile SevenZOutput = baru SevenZOutPutFile (file baru (output)); Entri SevenZarchiveEntry = NULL; String [] paths = input.split ("// |"); File [] file = file baru [paths.length]; untuk (int i = 0; i <paths.length; i ++) {file [i] = file baru (paths [i] .trim ()); } untuk (int i = 0; i <file.length; i ++) {bufferedInputStream input = null; enter = new bufferedInputStream (FileInputStream baru (paths [i])); if (name! = null) {entri = SevenZOutput.CreatearchiveEntry (file baru (paths [i]), name); } else {entry = SevenZoutput.CreatearchiveEnterry (file baru (path [i]), file baru (paths [i]). getName ()); } SevenZoutput.putarchiveEntry (entri); byte [] buffer = byte baru [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); }} Paket Zlib
public static void zlib (input string, output string) melempar Exception {// DefLaterOutputStream dos = new DeflaterOutputStream (FileOutputStream baru (output)); DeflateParameters dp = DeflateParameters baru (); dp.setwithzlibheader (true); DeflatecompressorOutputStream dcoS = DeflatecompressUnputStream baru baru (FileOutputStream baru (output), DP); FileInputStream fis = new fileInputStream (input); int panjang = (int) file baru (input) .length (); data byte [] = byte baru [panjang]; // panjang int; while ((length = fis.read (data))> 0) {dcos.write (data, 0, panjang); } fis.close (); dcos.finish (); dcos.close (); }Saya harap artikel ini akan membantu Anda. Ini semua bagi Anda untuk memperkenalkan konten yang dikompresi dan dikemas dari implementasi ZIP, GZIP, 7Z, dan format Zlib. Saya harap semua orang akan terus mengikuti situs web kami! Jika Anda ingin belajar Java, Anda dapat terus mengikuti situs web ini.