Good morning everyone,
I have a backup routine that should write the result to a JTextArea
, at runtime.
The copy works, the problem is that the window containing JTextArea
gets stuck and does not append the text every time a file or directory is copied. It only writes after the copy ends completely. I need you to write the status file to file.
Can anyone help me? It would be of great value, already have a time that I am breaking the head and do not find solution to similar problem on the net. Thank you.
Here are the codes:
private void executarActionPerformed(java.awt.event.ActionEvent evt) {
Path origem = Paths.get("\\apolo\sobe");
Path destino = Paths.get("\\hermes\DCPD\BKP-SOBE\teste5");
try {
jtaRetorno.append("Executando Cópia");
Files.walkFileTree(origem, new CopyDir(origem, destino, jtaRetorno));
} catch (IOException ex) {
Logger.getLogger(FrmExecutaCopia.class.getName()).log(Level.SEVERE, null, ex);
}
}
The class CopyDir
has the following code:
public class CopyDir extends SimpleFileVisitor<Path> {
private final Path origem;
private final Path destino;
private final JTextArea retorno;
// Construtor com origem e destino
public CopyDir(Path origem, Path destino, JTextArea retorno) {
this.origem = origem;
this.destino = destino;
this.retorno = retorno;
}
// Usado para criar o diretorio
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException {
copiaPath(dir);
retorno.append("Diretorio "+dir.toString()+" criado.\n");
System.out.println("Diretorio "+dir.toString()+" criado.\n");
return FileVisitResult.CONTINUE;
}
// Copia cada arquivo existente na arvore
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
copiaPath(file);
retorno.append("Arquivo "+file.toString()+" copiado.\n");
System.out.println("Arquivo "+file.toString()+" copiado.\n");
return FileVisitResult.CONTINUE;
}
// Metodo que efetivamente copia os arquivos
private void copiaPath(Path entrada) throws IOException {
// encontra o caminho equivalente na arvore de copia
Path novoDiretorio = destino.resolve(origem.relativize(entrada));
Files.copy(entrada, novoDiretorio);
}
/*
public static void main(String[] args) throws IOException{
Path origem = Paths.get("\\apolo\sobe");
Path destino = Paths.get("\\hermes\DCPD\BKP-SOBE\teste");
Files.walkFileTree(origem, new CopyDir(origem, destino, retorno));
}
*/
}