Não consigo zipar com esse código, mesmo olhando e seguindo os posts

5 respostas
A

Pessoal, após ver os tópicos relacionados, procurar no google, ler sobre a api, eu desisto e me rendo e perguntar para vcs.
o que estou fazendo de errado que não consigo zipar o arquivo com esse código, por favor me deem uma luz.
Agradeço desde já.

private void copyFile() throws IOException {
       
        FileInputStream in = new FileInputStream("C:\Documents and Settings\fly\Meus documentos\dir1\testeword.doc");
        FileOutputStream out = new FileOutputStream("C:\Documents and Settings\fly\Meus documentos\dir2\testeword.zip");
        //zipa o arquivo
       ZipOutputStream zip_out = new ZipOutputStream(out);        
            //captura o tamanho do arquivo
                        
        // Transfere bytes para saida
        byte[] buf = new byte[200000];
        int len;
        while ((len = in.read(buf)) > 0) {
            zip_out.write(buf, 0, len);          
        }
        in.close();        
        out.close();
        zip_out.closeEntry();
        zip_out.close();     
    }

5 Respostas

T

Só de olhar seu código dá para perceber que você esqueceu alguma coisa.
Todo arquivo .ZIP tem informação sobre cada um dos arquivos que foi adicionado ao .ZIP (no seu caso, uma ZipEntry).
Mas no seu caso você não chegou a criar uma ZipEntry, portanto não deve funcionar mesmo.

T

Um exemplo (este exemplo zipa apenas um arquivo mas você pode estendê-lo para zipar N arquivos: )

import java.io.*;
import java.util.zip.*;
public class Compress {
        public static void doit( String filein,  String fileout ){

                FileInputStream fis = null;
                FileOutputStream fos = null;

                try {
                        fis = new FileInputStream(filein);
                        fos = new FileOutputStream(fileout);
                        ZipOutputStream zos = new ZipOutputStream(fos);
                        ZipEntry ze = new ZipEntry(filein);
                        zos.putNextEntry(ze);
                        final int BUFSIZ = 4096;
                        byte inbuf[] = new byte[BUFSIZ];
                        int n;

                        while ((n = fis.read(inbuf)) != -1)
                        zos.write(inbuf, 0, n);
                        fis.close();
                        fis = null;
                        zos.close();
                        fos = null;
                } catch (IOException e) { 
                        System.err.println(e); 
                } finally {
                        try {
                                if (fis != null)   fis.close();
                                if (fos != null)  fos.close();
                        } catch (IOException e) {     }
                }
        }
        public static void main(String args[]) {
                Compress.doit(args[0], args[1]);
        }
}
Pedrosa

De uma olhada nesse exemplo:

http://forum.java.sun.com/thread.jspa?threadID=250124&messageID=926207

A

Entendí… vou tentar aquí e posto o resultado.
Obrigado por enquanto pessoal

A

Funcionou perfeitamente, vlw pessoal.

Criado 31 de outubro de 2007
Ultima resposta 1 de nov. de 2007
Respostas 5
Participantes 3