Durante o processo de trabalho, uma pasta precisa ser gerada para ser compactada e depois fornecida ao usuário para download. Então, eu mesmo escrevi uma classe de ferramentas para arquivos compactados. Esta classe de ferramenta suporta compactação de arquivo único e pasta. Coloque o código:
importar java.io.bufferedOutputStream; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar org.apache.tools.zip.zipentry; importar org.apache.tools.zipsysyorsyorsTupream;/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * ^ 2013-7-28 * @Description: File compression tool class* Compress the specified file/folder into zip and rar compressed files*/public class CompressedFileUtil { /** * Default constructor */ public CompressedFileUtil(){ } /** * @desc Generate the source file/folder in the specified format to compressed files, format zip * @param resourcePath Source file/folder * @Param TargetPath Destination Caminho de economia de arquivos compactado * @return void * @throws Exceção */ public void compactEdFile (String ResourcesPath, String TargetPath) lança Exceção {File ResourcesFile = new File (ResourcesPath); // arquivo de origem arquivo TargetFile = novo arquivo (TargetPath); // proposition // Se o caminho de destino não existir, crie um novo if (! TargetFile.Exists ()) {TargetFile.mkdirs (); } String TargetName = ResourcesFile.getName ()+". Zip"; // Nome do arquivo compactado de destino FileOutputStream OutputStream = new FileOutputStream (TargetPath+"//"+TargetName); ZipOutputStream Out = new ZipOutputStream (new BufferoudOutputStream (outputStream)); CreateCompressedFile (OUT, Recursosfile, ""); out.Close (); } /*** @DESC gera arquivo compactado. * Se for uma pasta, use a recursão para atravessar e comprimir o arquivo * Se for um arquivo, compressa diretamente * @param Out Stream * @param File File Target Arquivo * @return void * @THOWS Exceção */public void CreateCompressEdFile (ZiPOUTTUTREAM OUT, arquivo, arquivo de string) é excepção de execução {////////50, o arquivo de string */public void com excepção e se a exceção de string, ////////010, a parte mais ou menos. if (file.isdirectory ()) {// obtenha arquivos de informações da lista de arquivos [] arquivos = file.listfiles (); // Adicione a pasta ao diretório de embalagem do próximo nível. dir = dir.length () == 0? "": dir +"/"; // loop para embalar arquivos na pasta para (int i = 0; i <files.lengths; i ++) {createCompressedFile (out, arquivos [i], dir+arquivos [i] .getName ()); // Processamento recursivo}} else {// O atual é um arquivo, PACHING PROCESSING // FILE PRIMEIRA FILEIRUPTSTREAM FIS = new FileInputStream (File); out.putNextEntry (nova zipentry (dir)); // escreva int j = 0; byte [] buffer = novo byte [1024]; while ((j = fis.read (buffer))> 0) {out.write (buffer, 0, j); } // Fechar o fluxo de entrada fis.close (); }} public static void main (string [] args) {comprimedFileUtil CompressEdFileUtil = new CompressedFileUtil (); tente {compactedfileUtil.comPressedFile ("g: // zip", "f: // zip"); System.out.println ("O arquivo comprimido foi gerado ..."); } catch (Exceção e) {System.out.println ("Geração de arquivos compactada falhou ..."); E.PrintStackTrace (); }}}Os resultados da execução do programa são os seguintes:
A estrutura do diretório de arquivos antes da compactação:
Dica: se você usar java.util.zip sob java.util para embalagens, pode haver um problema de chinês ilegal. Isso ocorre porque o método Java ZIP não suporta alterações no formato de codificação. Podemos usar a classe de ferramentas ZIP em Ant.java para embalagem. Portanto, você precisa importar Ant.jar para o diretório LIB do projeto.
Resumir
O exposto acima é o código de exemplo para arquivos compactados gerados por Java introduzidos pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!