Jfilechooser java selecionar arquivo zip e descompactar

2 respostas
B

Eu preciso Descompactar o arquivo (.zip) e realizar uma comparação entre arquivos. Até a parte da comparação esta ok. alguém poderia me ajudar? pois não consigo colocar na logica a descompactação de arquivos e depois realizar a comparação

segue o código:

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import javax.swing.filechooser.FileNameExtensionFilter;

import javax.swing.JTextField;

import javax.swing.JButton;

import javax.swing.JFileChooser;
import java.awt.event.ActionListener;

import java.io.File;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Scanner;

import java.util.stream.Collectors;

import java.awt.event.ActionEvent;

import javax.swing.JLabel;

public class ComparaArquivo extends JFrame {

/**
 * 
 */
private static final long serialVersionUID = 1L;
protected static final Object LerArquivo = null;
private JPanel contentPane;
private static JTextField textFolder;
private JTextField textFile;
private JButton btnSelectFile;
private JButton btnCompare;
private JTextField textResult1;
private JTextField textResult2;

/**
 * Launch the application.
 */
public static void main(String[] args) {
	
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				ComparaArquivo frame = new ComparaArquivo();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}


/** jj
 * Create the frame.
 */
public ComparaArquivo() {
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 598, 517);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	setContentPane(contentPane);
	contentPane.setLayout(null);
	
	textFolder = new JTextField();
	textFolder.setBounds(26, 52, 213, 23);
	contentPane.add(textFolder);
	textFolder.setColumns(10);
	JButton btnSlectFolder = new JButton("New button");
	btnSlectFolder.setBounds(249, 52, 40, 22);
	btnSlectFolder.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			JFileChooser fc = new JFileChooser();
			
			
			fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
			fc.addChoosableFileFilter(new FileNameExtensionFilter("Zip Documents", "zip"));
			fc.addChoosableFileFilter(new FileNameExtensionFilter("Rar Documents", "rar"));
			fc.setAcceptAllFileFilterUsed(true);
			
			
			if(fc.showOpenDialog(contentPane) == JFileChooser.APPROVE_OPTION){
				textFolder.setText(fc.getSelectedFile().getAbsolutePath());
			
			}
			
			
		}
	});
	contentPane.add(btnSlectFolder);
	
	textFile = new JTextField();
	textFile.setBounds(304, 52, 213, 22);
	contentPane.add(textFile);
	textFile.setColumns(10);
	
	btnSelectFile = new JButton("New button");
	btnSelectFile.setBounds(527, 52, 40, 23);
	btnSelectFile.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			JFileChooser fc = new JFileChooser();
			fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
			fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
			fc.addChoosableFileFilter(new FileNameExtensionFilter("Zip Documents", "zip"));
			fc.addChoosableFileFilter(new FileNameExtensionFilter("Rar Documents", "rar"));
			fc.setAcceptAllFileFilterUsed(true);
			
			
			
			if(fc.showOpenDialog(contentPane) == JFileChooser.APPROVE_OPTION){
				textFile.setText(fc.getSelectedFile().getAbsolutePath());
			
			}
		}
	});
	contentPane.add(btnSelectFile);
	
	btnCompare = new JButton("Comparar");
	btnCompare.setBounds(469, 439, 98, 28);
	btnCompare.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			
			String pasta1 = textFolder.getText();
			File pasta = new File(pasta1);
			
			try {
				List<String> list =  Arrays.stream(pasta.list()).collect(Collectors.toList());
				
				String file1 = textFile.getText();
				File file = new File(file1);
				
				Scanner scanner = new Scanner(file);
				List<String> lista = new ArrayList<>();
			
				while (scanner.hasNext()) {
					lista.add(scanner.next());
				}
			
				scanner.close();
				StringBuilder sb = new StringBuilder();
			
				lista.stream().forEach(f -> {

				if (!list.contains(f)) {
						if (sb.length() == 0) {
							sb.append(f);
						} else {
							sb.append(", " + f);
						}
				}
				
				});
				
				System.out.println(sb.toString());
				textResult1.setText(sb.toString());
				
			} catch (Exception i) {
				i.printStackTrace();			
			}	
				
			try {
				List<String> list =  Arrays.stream(pasta.list()).collect(Collectors.toList());
					
				String file1 = textFile.getText();
				File file = new File(file1);
				
				Scanner scanner1 = new Scanner(file);
				List<String> lista = new ArrayList<>();
				
				while (scanner1.hasNext()) {
					lista.add(scanner1.next());
				}
				scanner1.close();
				StringBuilder sbb = new StringBuilder();
				
				list.stream().forEach(g -> {
					if (!lista.contains(g)) {
						if (sbb.length() == 0) {
						sbb.append(g);
						} else {
							sbb.append(", " + g);
						  }
					}
					
				});

				System.out.println(sbb.toString());
				textResult2.setText(sbb.toString());

			
			} catch (Exception h) {
				h.printStackTrace();			
			  }	
			}

	});
	
	
	contentPane.add(btnCompare);
	
	textResult1 = new JTextField();
	textResult1.setBounds(26, 86, 259, 342);
	contentPane.add(textResult1);
	textResult1.setColumns(10);
	
	JLabel Selec = new JLabel("Seleciona uma pasta");
	Selec.setBounds(28, 27, 153, 14);
	contentPane.add(Selec);
	
	JLabel lblNewLabel = new JLabel("Selecione um arquivo");
	lblNewLabel.setBounds(302, 27, 145, 14);
	contentPane.add(lblNewLabel);
	
	textResult2 = new JTextField();
	textResult2.setBounds(304, 85, 263, 343);
	contentPane.add(textResult2);
	textResult2.setColumns(10);
}

}

2 Respostas

jacoboliveira

Veja esse site aqui : https://www.baeldung.com/java-compress-and-uncompress

B

Valeu amigo, vou dar uma olhada

Criado 29 de janeiro de 2020
Ultima resposta 29 de jan. de 2020
Respostas 2
Participantes 2