Este exemplo usa o fluxo de entrada e saída ZIP do Java para compactar e descomprimir arquivos. A parte anterior do código implementa a aquisição de caminhos de arquivos, alterações nos nomes de arquivos compactados etc., da seguinte forma:
package com.utility.zip;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileOutputStream;import com.utility.io.IOUtil;/** *Compress and decompress files through Fluxo de entrada e saída ZIP de Java * * @Author LiujidUO * */public Final Class Ziputil {private ziputil () {// empty}/** * arquivo compactado * * @param filepath * caminho do arquivo a ser compactado * @return File File File (FILEP Public Static Zip (string filtropath) a ser compactado * @return arquivo de arquivo */public static zip (string filepath) (fonte.exists ()) {// Nome do arquivo compactado = nome do arquivo de origem.zipstring zipName = source.getName () + ".zip"; Target = new File (fonte.getParent (), zipName); if (Target.exists ()) {Target.DeLete (); // Delete) FileOut.Exists ()) {Target.Delete (); {fos = new FileOutputStream (Target); zos = new ZipOutputStream (new BufferoudOutputStream (fos)); // Adicione a entrada de arquivo correspondente ("/", origem, zos);} catch (ioexception e) {throw runtimeException (e);} finalmente {ioutil.close. * Scan to add file Entry * * @param base * Base path * @param source * Source file * @param zos * Zip file output stream* @throws IOException */private static void addEntry(String base, File source, ZipOutputStream zos) throws IOException {// Grade by directory, such as: /aaa/bbb.txtString entry = base + source.getName();if (source.isdirectory ()) {for (arquivo de arquivo: fonte.listfiles ()) {// lista recursivamente todos os arquivos no diretório e adicione arquivos EntryAdDentry (entrada + "/", arquivo, zos);}} mais {FileInputStream fis = null; FileInputStream (origem); bis = new bufferInputStream (fis, buffer.length); int read = 0; zos.putNextEntry (new Zipentry (entrada)); while ((read = bis.read (buffer, 0, buffer.length))! = -1) {zos.write (buffer, 0, leitura);} zos.closeEntry ();} finalmente {ioutil.close meticely (bis, fis);}}/** *** lime de************************, filepath) {arquivo de arquivo = novo arquivo (filepath); if (source.exists ()) {zipinputStream zis = null; bufferoudOutputStream bos = null; tente {zis = new ZipinputStream (new FileInputStream (fonte); Entry.getName ();); if (! Target.getParentFile (). exist ()) {// Crie o diretório pai do arquivo Target.getParentFile (). Mkdirs ();} // gravar no arquivo Bos = new BufferoutStutStream (new FileOutstream ([Target); int = 0; BUSHTE = BUSHTE = NEW BUFFERTUTSTREAM (new FileOutstream ([Target); Int = 0; zis.read (buffer, 0, buffer.length))! = -1) {bos.write (buffer, 0, leitura);} bos.flush ();} zis.closeentry ();}} ioexception e) {tiro runtimeException (e);} finalmente {ioutil.close. main (string [] args) {string TargetPath = "e: // win7 wallpaper"; arquivo file = ziputil.zip (TargetPath); System.out.println (file); ziputil.unzip ("f: // win7 wallpaper.zip");}}}}}A seguir, é apresentada uma descrição do idioma Java para fechar um ou mais objetos de fluxo através da classe de ferramentas de fluxo de IO para obter uma lista de objetos de fluxo fechado, como segue:
pacote com.utility.io; importar java.io.closeable; importar java.io.ioException;/** * IO STRAMEL CLASS * * @Author LiujidUO * */public Classe ioutil {/** * FHET ANEXEXCEIRSEMENTO DE STRETS * * * @PARAM Lista de fechos * {if (fechables! = null) {for (fechado fechado: fechables) {if (fechando! = null) {closable.close ();}}}}}/*** feche um ou mais objetos de fluxo** @param fechando* list de objetos de fluxo que podem estar fechados*/Public STATILD VOID {close (fechos);} catch (ioexception e) {// não faz nada}}}Resumir
O exposto acima é o conteúdo inteiro deste artigo sobre o exemplo de código do método de uso do ziputil de ferramenta de arquivo Java Compressa, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la.