Olá pessoal, eu precisava de ajuda para Integrar uma Cópia de arquivos com uma Barra de progresso,
busquei uns exemplos no fórum entendi o funcionamento da JProgressBar os métodos setValue(…), setMaximium(…), etc.
porém quando aplico ao meu código a janela sempre trava. Meu código está ai, alguém poderia modificá-lo integrando a JProgressBar?
Senão for possível apenas me explique o que poderia fazer para conseguir.
Desde já agradeço mesmo, estou postando só pelo fato de não estar conseguindo realizar isso há um bom tempo, sei dos problemas
de posts repetidos, mas é que naqueles que visualizei não encontrei o entendimento da situação. Obrigado a todos e já gostaria de
parabenizar a todos os participantes do GUJ, pelo excelente fórum tirando muitas dúvidas de java.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
public class Copy extends JFrame implements Runnable {
private File caminhoOrigem;
private File caminhoDestino;
private JPanel painel;
private JLabel etiqueta;
private JProgressBar barraDeProgresso;
public Copy(File caminhoOrigem, File caminhoDestino) {
this.painel = new JPanel();
this.etiqueta = new JLabel(" Copiando arquivos ... ");
this.barraDeProgresso = new JProgressBar();
this.caminhoOrigem = caminhoOrigem;
this.caminhoDestino = caminhoDestino;
painel.add(etiqueta);
painel.add(barraDeProgresso);
this.add(painel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(200, 100);
this.setVisible(true);
}
public static void copyFile(File origem, File destino) throws IOException {
if (!destino.exists()) {
FileInputStream fisOrigem = new FileInputStream(origem);
FileOutputStream fisDestino = new FileOutputStream(destino);
FileChannel fcOrigem = fisOrigem.getChannel();
FileChannel fcDestino = fisDestino.getChannel();
fcOrigem.transferTo(0, fcOrigem.size(), fcDestino);
fisOrigem.close();
fisDestino.close();
}
}
public static void copyAll(File origem, File destino) throws IOException {
if (!destino.exists()) {
destino.mkdir();
}
if (!origem.isDirectory()) {
throw new UnsupportedOperationException("Origem deve ser um diretório");
}
if (!destino.isDirectory()) {
throw new UnsupportedOperationException("Destino deve ser um diretório");
}
File[] files = origem.listFiles();
for (File file : files) {
if (file.isDirectory()) {
Copy.copyAll(file, new File(destino + "\\" + file.getName()));
} else {
System.out.println("Copiando arquivo: " + file.getName());
Copy.copyFile(file, new File(destino + "\\" + file.getName()));
}
}
}
public void run() {
try {
Copy.copyAll(caminhoOrigem, caminhoDestino);
} catch (IOException ex) {
System.err.println("Erro IOException");
}
}
public static void main(String[] args) {
File arquivo1 = new File("C:\\Teste");
File arquivo2 = new File("C:\\Temporarios");
Copy copiar = new Copy(arquivo1, arquivo2);
copiar.run();
}
}