Muitas vezes usamos software de compactação, como o Winzip, para compactar arquivos para facilitar a transmissão. O Java também fornece uma classe que comprime arquivos para reduzir a quantidade de dados durante a transmissão, que pode facilmente comprimir arquivos em zip, jar, gzip, etc. O GZIP é principalmente um arquivo compactado no sistema Linux.
O seguinte fala principalmente sobre arquivos compactados no formulário ZIP, e os arquivos compactados no formulário JAR e GZIP também são usados da mesma forma.
O ZIP é uma forma muito comum de compressão. Em Java, para implementar a compactação ZIP, o principal uso das classes no pacote java.util.zip. Inclua principalmente ZipFile, ZipOutputStream, ZipinputStream e Zipentry. O ZipOutputStream é usado para compactar arquivos, o ZipinputStream e o ZipFile são usados para descomprimir arquivos, e o Zipentry é usado durante a compressão e descompressão. Nos arquivos compactados Java Zip, cada subfile é um objeto Zipentry.
Arquivos compactados:
importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.inputStream; import java.nio.charset.charset; import java.util.zip.zipentry; importação; ZipOutputStreamTest {public static void main (string args []) lança ioexception {test1 (); test2 (); } public static void test1 () lança ioexception {zipOutputStream zos = new ZipOutputStream (new FileOutputStream ("d: //testzip.zip"), charset.formorne ("gbk")); // instancia um objeto de zipentry chamado ab.txt zipentry entrada = new zipentry ("ab.txt"); // Definir comentário zos.setComment ("teste zip para um único arquivo"); // Adicione o objeto Zipentry gerado no arquivo compactado e, em seguida, o conteúdo gravado no arquivo compactado será colocado neste objeto zipentry zos.putNextEntry (entrada); InputStream is = new FileInputStream ("d: //ab.txt"); int len = 0; while ((len = is.read ())! = -1) zos.write (len); is.close (); zos.close (); } public static void test2 () lança IoException {arquivo infile = new File ("d: // test"); ZipOutputStream zos = new ZipOutputStream (new FileOutputStream ("d: //test.zip"), charset.forname ("gbk")); zos.setComment ("processamento de vários arquivos"); zipfile (infilado, zos, ""); zos.close (); } public static void zipfile (arquivo de arquivo, zipOutputStream zos, string dir) lança ioexception {if (infile.isdirectory ()) {file [] arquivos = infile.listfiles (); para (arquivo de arquivo: arquivos) zipfile (arquivo, zos, dir + "//" + infile.getName ()); } else {string EntryName = null; if (! "". Equals (dir)) Entrada = DIR + "//" + infile.getName (); else EntryName = infile.getName (); Entrada de zipentry = new Zipentry (nome de entrada); zos.putNextEntry (entrada); InputStream é = new FileInputStream (infilado); int len = 0; while ((len = is.read ())! = -1) zos.write (len); is.close (); }}} Descompacte o arquivo:
importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.inputStream; importar java.io.outputStream; import java.nio.charset.charset; importação; importação; java.util.zip.zipfile; importar java.util.zip.zipinputStream; classe pública ZipinputStreamTest {public static void main (string args []) lança ioException {file file = new File (d: //test.zip "); // compressa zipfil. Cada arquivo compactado com ZIP pode ser representado como um zipFile // instanciar um objeto ZipImputStream de um arquivo compactado ZIP, você pode usar o método getNextEntry () desta classe para obter cada zippinputStream zipinpinTream = new ZipinputStream (FileInputStram (File), charset.formornam ("GRIGENTREAM), CARROTET.FORNAME (FILHO), CARROTSTREAM (FILEIR), CARROTSTREAM, Zipentry zipentry = null; while ((zipentry = zipinputStream.getNextEntry ())! = null) {string filename = zipentry.getName (); Arquivo temp = novo arquivo ("d: // unpacktest //" + arquivo de arquivo); if (! Temp.getParentFile (). Existe ()) temp.getParentFile (). mkdirs (); OutputStream OS = new FileOutputStream (temp); // Obtenha o fluxo de entrada zipentry específico através do método getInputStream do ZIPFILE inputStream is = zipfile.getInputStream (zipentry); int len = 0; while ((len = is.read ())! = -1) os.write (len); os.close (); is.close (); } zipinputStream.close (); }}O exposto acima é uma compilação das informações sobre arquivos de compressão e descompressão Java. Continuaremos a adicionar informações relevantes no futuro. Obrigado pelo seu apoio a este site!