Este artículo presenta principalmente el uso de clases relacionadas con Java para comprimir archivos o carpetas.
ZLIB es una biblioteca de compresión de datos diseñada para procesar datos puros (independientemente de la fuente de los datos).
7Z es un nuevo formato de compresión que tiene la relación de compresión más alta en la actualidad.
GZIP es una herramienta de compresión de archivos (o el formato de archivo comprimido generado por la herramienta de compresión) y está diseñada para procesar archivos individuales. GZIP usa ZLIB cuando se extiende los datos en un archivo. Para guardar información relacionada con las propiedades del archivo, GZIP necesita guardar más contenido de encabezado en el archivo comprimido (*.gz), y ZLIB no necesita considerar esto. Pero GZIP solo es adecuado para un solo archivo, por lo que los sufijos que a menudo vemos en UNIX/Linux son *.tar.gz o *.tgz, lo que significa que varios archivos primero se empaquetan en un solo archivo con alquitrán, y luego se comprime con GZIP.
ZIP es un formato adecuado para comprimir múltiples archivos (las herramientas correspondientes incluyen PKZIP y Winzip, etc.). Por lo tanto, el archivo ZIP debe contener información sobre la estructura del directorio de archivos, que es más información que el encabezado de GZIP. Sin embargo, debe tenerse en cuenta que el formato ZIP puede adoptar una variedad de algoritmos de compresión. La mayoría de nuestros archivos zip comunes no se comprimen utilizando el algoritmo ZLIB, y el formato de los datos comprimidos es muy diferente al de GZIP.
Por lo tanto, debe elegir diferentes técnicas de compresión de acuerdo con sus necesidades específicas: si solo necesita comprimir/descomprimir los datos, puede implementarlo directamente con ZLIB. Si necesita generar archivos de formato GZIP o descomprimir los resultados de compresión de otras herramientas, debe usar GZIP o ZIP y otras clases relacionadas para manejarlo.
dependencia de maven
<Spendency> <MoupRoD> org.apache.commons </groupid> <artifactid> commons-compress </artifactid> <versever> 1.12 </verversion> </dependence>
formato zip
public static void zip (entrada de cadena, salida de cadena, nombre de cadena) lanza la excepción {ZipOutputStream out = new ZipOutputStream (new FileOutputStream (salida)); String [] rutas = input.split ("// |"); Archivo [] archivos = nuevo archivo [paths.length]; byte [] buffer = new Byte [1024]; for (int i = 0; i <paths.length; i ++) {archivos [i] = new File (rutas [i]); } for (int i = 0; i <files.length; i ++) {fileInputStream fis = new FileInputStream (archivos [i]); if (files.length == 1 && name! = null) {out.putNextEntry (new ZipEntry (nombre)); } else {out.putNextEntry (new ZipEntry (archivos [i] .getName ())); } int len; // Lea el contenido del archivo que necesita descargarlo y empaquetarlo en el archivo zip while ((len = fis.read (buffer))> 0) {out.write (buffer, 0, len); } out.closeEntry (); fis.close (); } out.close (); } out.close (); } Paquete GZIP
public static void gzip (entrada de cadena, salida de cadena, nombre de cadena) lanza la excepción {String compress_name = null; if (name! = null) {compress_name = name; } else {compress_name = nuevo archivo (entrada) .getName (); } byte [] buffer = new Byte [1024]; intente {gzipparameters gp = new Gzipparameters (); // Establecer el nombre del archivo en el archivo comprimido gp.setFileName (compress_name); GZIPCOMPRESOROUTPUTSTREAM GCOS = new GZIPCOMPRESOREOTPUTSTREAM (nuevo FileOutputStream (salida), GP); FileInputStream fis = new FileInputStream (entrada); int longitud; while ((longitud = fis.read (buffer))> 0) {gcos.write (buffer, 0, longitud); } fis.close (); gcos.finish (); } catch (ioException IOE) {ioe.printstacktrace (); }} Paquete de 7z
public static void z7z (entrada de cadena, salida de cadena, nombre de cadena) lanza la excepción {try {SeedzoutputFile Seedzoutput = new SeedzoutputFile (nuevo archivo (salida)); SeedZarchiveEntry Entry = NULL; String [] rutas = input.split ("// |"); Archivo [] archivos = nuevo archivo [paths.length]; for (int i = 0; i <raths.length; i ++) {archivos [i] = new File (rutas [i] .trim ()); } for (int i = 0; i <files.length; i ++) {bufferedInputStream input = null; Enter = new BufferedInputStream (new FileInputStream (rutas [i])); if (name! = null) {entry = sieteZoutput.CreateChiveEntry (nuevo archivo (rutas [i]), name); } else {Entry = Seedzoutput.CreateChiveEntry (nuevo archivo (rutas [i]), nuevo archivo (rutas [i]). getName ()); } Seedzoutput.PutArchiveEntry (entrada); byte [] buffer = new Byte [1024]; int len; while ((len = enterTream.read (buffer))> 0) {Seedzoutput.write (buffer, 0, len); } enter.close (); sieteZoutput.ClosearchiveEnry (); } Seedzoutput.Close (); } Seedzoutput.Close (); } catch (ioException IOE) {System.out.println (ioe.ToString () + "" + entrada); }} Paquete ZLIB
public static void zlib (entrada de cadena, salida de cadena) lanza la excepción {// DeFlAterOutputStream dos = new DeFLATEROUTPUTStream (New FileOutputStream (salida)); DeflateParameters dp = new DeFlateParameters (); dp.setwithzlibheader (verdadero); DeFLATECOMPRESOROUTPUTSTREAM DCOS = new DeFLATECOMPRESSOUTOTPUTSTREAM (new FileOutputStream (salida), DP); FileInputStream fis = new FileInputStream (entrada); int longitud = (int) nuevo archivo (entrada) .length (); Datos de byte [] = new Byte [longitud]; // int longitud; while ((longitud = fis.read (data))> 0) {dcos.write (data, 0, longitud); } fis.close (); dcos.finish (); dcos.close (); }Espero que este artículo te sea útil. Todo esto es para que usted introduzca el contenido comprimido y empaquetado de la implementación de Java de formatos ZIP, GZIP, 7Z y ZLIB. ¡Espero que todos continúen siguiendo nuestro sitio web! Si desea aprender Java, puede continuar siguiendo este sitio web.