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);
}
}