Me ajuda com Compactaçao de dados

3 respostas
xxjamisxx

entao galera tenho quer fazer um trabalho
para compacta e decopactaçao
bem foi facil acha ums codigos
na net junta tuda e fazer o bagulho roda
ele compacta tudo certinho
mais quando vou descopacta ele os
arquivos que ta dentro zera tudo
os dados dos txt some algum saber me dizer pq
sera que to fazendo algum errado
ae o codigo

package compactaçao;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
/**

/**
 *
 * @author guilherme
 */
public class Compacta {
      static final int BUFFER = 2048;

       // TODO code application logic here
    public void compacta()
    {
            System.out.println("Exemplo de criaçao de arquivos ZIP");
      //arquivos a serem zipados (crie estes arquivos na pasta onde voce vai colocar este codigo-fonte)
      String[] filesZip = new String[3];
       filesZip[0] = "primeiro.txt";
       filesZip[1] = "segundo.txt";
       filesZip[2] = "terceiro.txt";

     byte[] buffer = new byte[18024];
    //nome do arquivo zip

     String zipFileName ="c:\\example.zip";

     try{
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
        // ajusta modo de compressão
       out.setLevel(Deflater.DEFAULT_COMPRESSION);
       //faz a iteração sobre os arquivos ,adicionando-os arquivos ZIP
      for(int i = 0;i < filesZip.length;i++)
      {
        System.out.println(i);
       FileInputStream in = new FileInputStream(filesZip[i]);
       //adicionar zip no output strean
       out.putNextEntry(new ZipEntry(filesZip[i]));
       //transfer bytes from the current file to the zip file
       int len;
        while((len = in.read())> 0)
        {
            out.write(buffer,0,len);
        }
      // fecha o current
       out.closeEntry();
       //fecha o input stream

      }
       out.close();
     }
    catch(IllegalArgumentException r)
    {
        r.printStackTrace();
    }
    catch(FileNotFoundException r)
    {
        r.printStackTrace();
    }
    catch(IOException r)
    {
        r.printStackTrace();
    }
    }
   public void desconpacta()
   {

      try
     {
        System.out.println("Example of ZIP file decompression.");

       // Specify file to decompress
       String inFileName = "c:\\example.zip";
       // Specify destination where file will be unzipped
       String destinationDirectory = "c:\\temp\\";

       File sourceZipFile = new File(inFileName);
       File unzipDestinationDirectory = new File(destinationDirectory);

       // Open Zip file for reading
       ZipFile zipFile = new ZipFile(sourceZipFile, ZipFile.OPEN_READ);

       // Create an enumeration of the entries in the zip file
       Enumeration zipFileEntries = zipFile.entries();

       // Process each entry
       while (zipFileEntries.hasMoreElements())
       {
         // grab a zip file entry
         ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();

         String currentEntry = entry.getName();
         System.out.println("Extracting: " + entry);

         File destFile =
           new File(unzipDestinationDirectory, currentEntry);

         // grab file's parent directory structure
         File destinationParent = destFile.getParentFile();

         // create the parent directory structure if needed
         destinationParent.mkdirs();

         // extract file if not a directory
         if (!entry.isDirectory())
         {
           BufferedInputStream is =
             new BufferedInputStream(zipFile.getInputStream(entry));
           int currentByte;
           // establish buffer for writing file
           byte data[] = new byte[BUFFER];

           // write the current file to disk
           FileOutputStream fos = new FileOutputStream(destFile);
           BufferedOutputStream dest =
           new BufferedOutputStream(fos, BUFFER);

           // read and write until last byte is encountered
           while ((currentByte = is.read(data, 0, BUFFER)) != -1)
           {
             dest.write(data, 0, currentByte);
           }
           dest.flush();
           dest.close();
           is.close();
         }
       }
       zipFile.close();
     }
     catch (IOException ioe)
     {
     ioe.printStackTrace();
     }

   }



}

ser algum poder me ajuda agradeço muito

3 Respostas

ViniGodoy

Não recorte e cole códigos da web sem entender o que está fazendo. Já que você já sabe que classes existem para lidar com compactação, estude-as.

Outra coisa, sempre que vc ver uma classe com o nome de “OutputStream”, desconfie que existe uma classe com o nome de “InputStream” que faz a mesma coisa, mas no sentido inverso.

xxjamisxx

ploblema resolvido
tinha que coloca os bytes que tinha
que le aparti do proximo no read
mais vlw ae

B

xxjamisxx:
ploblema resolvido
tinha que coloca os bytes que tinha
que le aparti do proximo no read
mais vlw ae

Acho que você tem outro problema para resolver :slight_smile:

Criado 23 de setembro de 2010
Ultima resposta 23 de set. de 2010
Respostas 3
Participantes 3