@Felipe_Hoffmann escreveu:
Olá pessoal, tudo bem com vocês?
Teria como eu implementar uma barra de progresso enquanto eu compacto um arquivo com o método abaixo?
Desde já, agradeço a ajuda.public void zip(File[] files, File outputFile, JProgressBar barraProgresso) throws IOException { if (files != null && files.length > 0) { ZipOutputStream out = new ZipOutputStream( new FileOutputStream(outputFile)); Stack<File> parentDirs = new Stack<File>(); zipFiles(parentDirs, files, out, barraProgresso); out.close(); } } private void zipFiles(Stack<File> parentDirs, File[] files, ZipOutputStream out, JProgressBar barraProgresso) throws IOException { byte[] buf = new byte[1024]; for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { // se a entrada é um diretório, empilha o diretório e // chama o mesmo método recursivamente parentDirs.push(files[i]); zipFiles(parentDirs, files[i].listFiles(), out, barraProgresso); // após processar as entradas do diretório, desempilha parentDirs.pop(); } else { FileInputStream in = new FileInputStream(files[i]); // itera sobre os itens da pilha para montar o caminho // completo do arquivo String path = ""; for (File parentDir : parentDirs) { path += parentDir.getName() + "/"; } // grava os dados no arquivo zip out.putNextEntry(new ZipEntry(path + files[i].getName())); int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } out.closeEntry(); in.close(); } } }
Mensagens: 1
Participantes: 1