A menudo usamos software de compresión como Winzip para comprimir archivos para una fácil transmisión. Java también proporciona una clase que comprime archivos para reducir la cantidad de datos durante la transmisión, que puede comprimir fácilmente los archivos en Zip, JAR, GZIP, etc. GZIP es principalmente un archivo comprimido debajo del sistema Linux.
Lo siguiente se trata principalmente de archivos comprimidos en forma zip, y los archivos comprimidos en forma jar y gzip también se usan de manera similar.
La zip es una forma muy común de compresión. En Java, para implementar la compresión zip, el uso principal de las clases en el paquete java.util.zip. Incluya principalmente ZipFile, ZipoutputStream, ZipInputStream y ZipEntry. ZipoutputStream se usa para comprimir archivos, ZipInputStream y Zipfile se usan para descomprimir archivos, y ZipEntry se usa durante la compresión y la descompresión. En los archivos comprimidos con zip java, cada subfile es un objeto ZipEntry.
Archivos comprimidos:
import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.ioexception; import java.io.inputstream; import java.nio.carset.charset; import java.util.zipentry; import java.util.zip.zip.zipoutset; ZipoutputStreamTest {public static void main (string args []) lanza ioexception {test1 (); test2 (); } public static void test1 () lanza IOException {ZipOutputStream Zos = new ZipOutputStream (nuevo FileOutputStream ("d: //testzip.zip"), charset.forname ("gbk")); // Instanciar un objeto ZipEntry llamado AB.TXT ZIPENTRY Entry = New ZipEntry ("AB.TXT"); // establecer comentario zos.setComment ("prueba zip para un solo archivo"); // Agregue el objeto ZipEntry generado en el archivo comprimido, y luego el contenido escrito en el archivo comprimido se colocará en este objeto ZipEntry Zos.putNextEntry (entrada); InputStream es = nuevo FileInputStream ("d: //ab.txt"); int len = 0; while ((len = is.read ())! = -1) Zos.Write (len); is.close (); zoS.Close (); } public static void test2 () lanza ioexception {file infile = nuevo archivo ("d: // test"); ZipOutputStream Zos = nuevo ZipOutputStream (nuevo FileOutputStream ("d: //test.zip"), charset.forname ("gbk")); Zos.SetComment ("Procesamiento de múltiples archivos"); Zipfile (infile, Zos, ""); zoS.Close (); } public static void zipfile (File Infile, ZipoutputStream Zos, String Dir) lanza ioexception {if (infile.isDirectory ()) {file [] files = infile.listFiles (); para (archivo de archivo: archivos) zipfile (archivo, zoS, dir + "//" + infile.getName ()); } else {String entryname = null; if (! "". Equals (dir)) EntryName = Dir + "//" + infile.getName (); else entryname = infile.getName (); Zipentry entry = new ZipEntry (EntryName); Zos.putNextEntry (entrada); InputStream es = nuevo FileInputStream (infile); int len = 0; while ((len = is.read ())! = -1) Zos.Write (len); is.close (); }}} Descompensar el archivo:
import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.ioException; import java.io.inputstream; import java.io.outputStream; import java.nio.charset.charset; import java.util.zip.zip.s java.util.zip.zipfile; import java.util.zip.zipinputStream; public class ZipInputStreamTest {public static void main (string args []) lanza ioexception {file de archivo = nuevo archivo ("d: //test.zip"); // Comes de compres Zipfile Zipfile = new Zipfile (nuevo); Cada archivo comprimido ZIP se puede representar como un archivo ZipFile // instanciando un objeto ZIPInputStream de un archivo comprimido ZIP, puede usar el método getNextEntry () de esta clase para obtener cada ZipInputStream ZipInputStream = new ZipInputStream (nuevo FileInputputam (File), Charset.forname ("gbk"););); ZipEntry Zipentry = NULL; while ((zipEntry = zipinputstream.getNextEntry ())! = null) {string filename = zipEntry.getName (); Archivo temp = nuevo archivo ("d: // impacktest //" + nombre de archivo); if (! temp.getParentFile (). exists ()) temp.getParentFile (). MkDirs (); OutputStream OS = nuevo FileOutputStream (TEMP); // Obtenga la transmisión de entrada ZipEntry específica a través del método GetInputStream de ZipFile, InputStream IS = ZipFile.GetInputStream (ZipEntry); int len = 0; while ((len = is.read ())! = -1) os.write (len); os.close (); is.close (); } zipinputstream.close (); }}Lo anterior es una compilación de la información sobre los archivos de compresión y descompresión de Java. Continuaremos agregando información relevante en el futuro. ¡Gracias por su apoyo para este sitio web!