Este artigo apresenta principalmente o uso de classes relacionadas a Java para compactar arquivos ou pastas.
O ZLIB é uma biblioteca de compressão de dados projetada para processar dados puros (independentemente da fonte dos dados).
7Z é um novo formato de compressão que possui a maior taxa de compressão no momento.
O GZIP é uma ferramenta de compactação de arquivo (ou o formato de arquivo compactado gerado pela ferramenta de compactação) e foi projetado para processar arquivos individuais. O GZIP usa o ZLIB ao fechar os dados em um arquivo. Para salvar informações relacionadas às propriedades do arquivo, o GZIP precisa salvar mais conteúdo do cabeçalho no arquivo compactado (*.gz) e o ZLIB não precisa considerar isso. Mas o GZIP é adequado apenas para um único arquivo; portanto, os sufixos que costumamos ver no Unix/Linux são *.tar.gz ou *.tgz, o que significa que vários arquivos são primeiro embalados em um único arquivo com alcatrão e depois compactados com GZIP.
O ZIP é um formato adequado para comprimir vários arquivos (as ferramentas correspondentes incluem Pkzip e Winzip, etc.). Portanto, o arquivo zip deve conter ainda mais informações sobre a estrutura do diretório de arquivos, que é mais informações do que o cabeçalho do GZIP. No entanto, deve -se notar que o formato ZIP pode adotar uma variedade de algoritmos de compressão. A maioria dos nossos arquivos ZIP comum não é compactada usando o algoritmo ZLIB, e o formato dos dados compactados é muito diferente do do GZIP.
Portanto, você deve escolher diferentes técnicas de compactação de acordo com suas necessidades específicas: se você precisar apenas compactar/descomprimir os dados, poderá implementá -los diretamente com o ZLIB. Se você precisar gerar arquivos de formato GZIP ou descomprimir os resultados da compactação de outras ferramentas, você deve usar o GZIP ou o ZIP e outras classes relacionadas para lidar com isso.
Dependência do Maven
<Depencency> <GrupidId> org.apache.commons </frugiD> <ArtifactId> Commons-compress </ArtifactId> <versão> 1.12 </versão> </dependency>
Formato Zip
public static void zip (entrada da string, saída de string, nome da string) lança Exceção {zipOutputStream Out = new ZipOutputStream (new FileOutputStream (output)); String [] Paths = input.split ("// |"); Arquivo [] arquivos = novo arquivo [paths.length]; byte [] buffer = novo byte [1024]; for (int i = 0; i <paths.length; i ++) {files [i] = novo arquivo (caminhos [i]); } para (int i = 0; i <files.length; i ++) {fileInputStream fis = new FileInputStream (arquivos [i]); if (files.length == 1 && name! = null) {out.putNextEntry (novo zipentry (nome)); } else {out.putNextEntry (new Zipentry (arquivos [i] .getName ())); } int len; // Leia o conteúdo do arquivo que você precisa baixar e embalá -lo no arquivo zip while (len = fis.read (buffer))> 0) {out.write (buffer, 0, len); } out.CloseEntry (); fis.close (); } out.close (); } out.close (); } pacote gzip
public static void gzip (entrada da string, saída da string, nome da string) lança a exceção {string compact_name = null; if (nome! = null) {compress_name = name; } else {compress_name = novo arquivo (entrada) .getName (); } byte [] buffer = novo byte [1024]; tente {gzipparameters gp = new Gzipparameters (); // Defina o nome do arquivo no arquivo compactado gp.setfilename (compress_name); GzipCompressorOutputStream gCos = new GzipCompressorOutputStream (new FileOutputStream (output), GP); FileInputStream fis = new FileInputStream (entrada); comprimento int; while ((comprimento = fis.read (buffer))> 0) {gcos.write (buffer, 0, comprimento); } fis.close (); gcos.finish (); } catch (ioexception ioe) {ioe.printStackTrace (); }} 7z pacote
public static void Z7Z (entrada da string, saída da string, nome da string) lança Exceção {try {setezOutputFile setezOutput = new SevenzOutputFile (novo arquivo (output)); SetezarchiveEntry entrada = nulo; String [] Paths = input.split ("// |"); Arquivo [] arquivos = novo arquivo [paths.length]; for (int i = 0; i <paths.length; i ++) {arquivos [i] = novo arquivo (caminhos [i] .Trim ()); } para (int i = 0; i <files.length; i ++) {bufferInputStream input = null; enter = new bufferInputStream (new FileInputStream (caminhos [i])); if (name! = null) {entradas = setezOutput.createarchiveEntry (novo arquivo (caminhos [i]), nome); } else {entradas = setezoutput.createarchiveEntry (novo arquivo (caminhos [i]), novo arquivo (caminhos [i]). getName ()); } setezoutput.putarchiveEntry (entrada); byte [] buffer = novo byte [1024]; int len; while ((len = EnterStream.read (buffer))> 0) {setezOutput.Write (buffer, 0, len); } enter.close (); setezOutput.ClosEarchiveEntry (); } setezOutput.close (); } setezOutput.close (); } catch (ioexception ioe) {System.out.println (iooe.toString () + "" + entrada); }} pacote zlib
public static void zlib (entrada de string, string output) lança Exceção {// DeflaterOutputStream DOS = new DeflaterOutputStream (new FileOutputStream (output)); DeflateParameters dp = new DeflateParameters (); dp.setWithzlibHeader (true); DeflatecomPressorOutputStream DCOS = new DeflatecompressorOutputStream (new FileOutputStream (output), DP); FileInputStream fis = new FileInputStream (entrada); int length = (int) novo arquivo (entrada) .Length (); dados de bytes [] = novo byte [comprimento]; // comprimento int; while ((comprimento = fis.read (dados))> 0) {dcos.write (dados, 0, comprimento); } fis.close (); DCOS.finish (); DCOS.Close (); }Espero que este artigo seja útil para você. Tudo isso é para você apresentar o conteúdo compactado e embalado da implementação Java dos formatos ZIP, GZIP, 7Z e ZLIB. Espero que todos continuem a seguir nosso site! Se você quiser aprender Java, pode continuar a seguir este site.