1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Ajuda, Código de Compactação de arquivos.

Gosta da ajuda de alguém com esse codigo. Tenho esse codigo de compactação de arquivos nos formatos de .RAR e .ZIP, porém na hora de selecionar arquivos para a compactação o programa só seleciona pastas, alguém pode me ajudar?

Class Compactador

package br.unipe.spi.zip;
import java.io.*;  
import java.util.zip.*;  
import java.util.ArrayList;
import java.util.Enumeration;

import javax.print.attribute.standard.Finishings;
import javax.swing.JOptionPane;

public class Compactador {  


    static final int TAMANHO_BUFFER = 4096; // 4kb

    public static void compactarDirParaZip(String pathName, String tipo)throws IOException{
        File dir = new File(pathName); // recebe a string e criar um diretorio

        //Se o direto retorio nao existir lança exception 
        if (!dir.isDirectory()) {
            throw new IOException("Diretorio não encontrado");
        }


        //pegando os arquivos do diretorio
        File[] files = dir.listFiles();

        for (File file : files) {
            //checando se o arquivo nao e uma pasta se o arquivo jado nao estar zipa
            if(!file.isDirectory() && !file.getName().endsWith("zip")&& !file.getName().endsWith("rar")){

                int cont;
                byte [] dados = new byte [ TAMANHO_BUFFER];
                BufferedInputStream origem = null;
                FileInputStream streamDeEntrada = null;
                FileOutputStream destino = null;
                ZipOutputStream saida = null;
                ZipEntry  entry = null;

                try {
                    //pegando o arquivo com o diretorio e gerando o .zip
                    File file2 = new File(file.getAbsolutePath()+"."+tipo);
                    destino = new  FileOutputStream(file2);

                    //cria um output para arquivo zip
                    saida = new ZipOutputStream(new BufferedOutputStream(destino));
                    streamDeEntrada  = new FileInputStream(file);
                    origem = new BufferedInputStream(streamDeEntrada, TAMANHO_BUFFER);
                    entry = new ZipEntry(file2.getName());
                    saida.putNextEntry(entry);
                    //salva no os dados carregados na memória ram no arquivo zip
                    while((cont = origem.read(dados, 0, TAMANHO_BUFFER)) != -1) {
                        saida.write(dados, 0, cont);
                    }
                    //fecha os streams
                    origem.close();
                    saida.close();
                }catch (IOException  e){
                    System.out.println(e.getMessage());
                    throw new IOException(e.getMessage());
                }

            }

        }

    }

    public static ArrayList<String> listarArquivos(String caminho){
        File file = new File(caminho);
        ArrayList<String> arquivos = new ArrayList<String>();
        for (String a : file.list()) {
            if(!a.endsWith(".zip")   && !a.endsWith(".rar")){
                arquivos.add(a.replace(".txt", ""));
            }
        }
        return arquivos;
    }


    public static ArrayList<String> listarArquivosZipados(String caminho){
        File file = new File(caminho);
        ArrayList<String> arquivos = new ArrayList<String>();
        for (String a : file.list()) {
            if(a.endsWith(".zip") ||a.endsWith(".rar")){
                arquivos.add(a);
            }
        }
        return arquivos;
    }


}

Class Tela do Programa

package br.unipe.spi.zip;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class TelaZip extends JFrame implements ActionListener{

    JLabel JLcaminho;
    JTextField JTcaminho;
    JButton JBlistar,JBcompactar, jbBuscar;
    Container c;
    JPanel JParquivos;
    JComboBox<String>JCBtipo;
    TextArea JTarquivos, JTarquivosZipados;
    JFileChooser caminho;

    public TelaZip () {
        super("Zipa Arquivos");
        c = getContentPane();
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(650,350);
        this.setResizable(false);
        this.setLayout(null);
        this.setLocationRelativeTo(null);
        this.setBackground(Color.BLUE);

        Font fonte = new Font("Time new Roma", Font.BOLD, 15);


        JLcaminho = new JLabel("Diretorio");
        JLcaminho.setFont(fonte);
        JLcaminho.setBounds(10,30, 100, 20);
        c.add(JLcaminho);


        JTcaminho = new JTextField("");
        JTcaminho.setBounds(85,30, 200, 20);
        c.add(JTcaminho);

        JBlistar = new JButton("Listar");
        JBlistar.setBounds(300, 52,90, 20);
        JBlistar.setVisible(true);
        JBlistar.addActionListener(this);
        c.add(JBlistar);

        jbBuscar = new JButton("Buscar");
        jbBuscar.setBounds(300, 30, 90, 20);
        jbBuscar.setVisible(true);
        jbBuscar.addActionListener(this);
        c.add(jbBuscar);



        String[] usuarios = { "rar", "zip" };
        JCBtipo = new JComboBox<String>(usuarios);
        JCBtipo.setBounds(460,30, 60, 20);
        JCBtipo.setFont(fonte);
        c.add(JCBtipo);

        JLabel JLarquivos = new JLabel("Arquivos");
        JLarquivos.setBounds(10,70,60,20);
        c.add(JLarquivos);


        JTarquivos = new TextArea("");
        JTarquivos.setBounds(30,100,200,150);
        JTarquivos.setBackground(new Color(255,255,255));
        JTarquivos.setVisible(true);
        JTarquivos.setEditable(false);
        JScrollPane js = new JScrollPane(JTarquivos);
        c.add(js);
        c.add(JTarquivos);

        JLabel JLarquivosZipados = new JLabel("Arquivos Zipados");
        JLarquivosZipados.setBounds(430,70,100,20);
        c.add(JLarquivosZipados);

        JTarquivosZipados = new TextArea("");
        JTarquivosZipados.setBounds(430,100,200,150);
        JTarquivosZipados.setBackground(new Color(255,255,255));
        JTarquivosZipados.setVisible(true);
        JTarquivosZipados.setEditable(false);
        JScrollPane js2 = new JScrollPane(JTarquivosZipados);
        c.add(js2);
        c.add(JTarquivosZipados);

        JBcompactar = new JButton("Compactar");
        JBcompactar.setBounds(250, 130, 130, 20);
        JBcompactar.setVisible(true);
        JBcompactar.addActionListener(this);
        c.add(JBcompactar);

        caminho = new JFileChooser();


        this.setVisible(true);
    }


    public static void main(String[] args) {
        new TelaZip();
    }


    @Override
    public void actionPerformed(ActionEvent a) {
        try{

        if (a.getSource() == JBlistar) {
            String listaArquivos = "";
            for (String arquivos : Compactador.listarArquivos(JTcaminho.getText())) {
                listaArquivos += arquivos +"\n";
            }
            JTarquivos.setText(listaArquivos);
            String listaArquivosZipados ="";
            for (String arquivos : Compactador.listarArquivosZipados(JTcaminho.getText())) {
                listaArquivosZipados += arquivos+ "\n";
            }
            JTarquivosZipados.setText(listaArquivosZipados);

        }else if(a.getSource() == JBcompactar){
            Compactador.compactarDirParaZip(JTcaminho.getText(),JCBtipo.getSelectedItem().toString());
            JBlistar.doClick();
        }
        else if(a.getSource() == jbBuscar){
            caminho.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            int i= caminho.showSaveDialog(null); 
            if (i==1){ 
            }
            else {
                File arquivo = caminho.getSelectedFile();
                JTcaminho.setText(arquivo.getPath()); 
            }
        }

        }catch(Exception e){
            JOptionPane.showMessageDialog(null, "Caminho invalido");
        }

    }

}
  • Posso estar errado, mas acho que isso tem alguma coisa a ver não? [caminho.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);]

    adriano_si   04 de dez de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java arquivos busca ou faça a sua própria pergunta.