public void copiarArquivos(Path origem, Path destino) throws IOException {
// se é um diretório, tentamos criar. se já existir, não tem problema.
if(Files.isDirectory(origem)){
Files.createDirectories(destino);
// listamos todas as entradas do diretório
DirectoryStream entradas = Files.newDirectoryStream(origem);
for (Path entrada : entradas ) {
// para cada entrada, achamos o arquivo equivalente dentro de cada arvore
Path novaOrigem = origem.resolve(entrada.getFileName());
Path novoDestino = destino.resolve(entrada.getFileName());
// invoca o metodo de maneira recursiva
copiarArquivos(novaOrigem, novoDestino);
}
} else {
// copiamos o arquivo
Files.copy(origem, destino);
}
}
private void btnPastaRaiz_actionPerformed(ActionEvent e) {
final JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
final int returnVal = chooser.showDialog(null, "Escolher Pasta Raiz");
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
fileOrigem = chooser.getSelectedFile().getAbsolutePath();
fieldPastaRaiz.setText(chooser.getSelectedFile().getAbsolutePath());
Path dir = Paths.get(fileOrigem);
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path file2: stream) {
System.out.println(file2.getFileName());
}
} catch (IOException | DirectoryIteratorException x) {
// IOException can never be thrown by the iteration.
// In this snippet, it can only be thrown by newDirectoryStream.
System.err.println(x);
}
} catch (final Exception ioException) {
ioException.printStackTrace();
}
} else {
}
}
private void btnPastaSaida_actionPerformed(ActionEvent e) {
final JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
final int returnVal = chooser.showDialog(null, "Escolher Pasta de Saída");
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
fileDestino = chooser.getSelectedFile().getAbsolutePath();
fieldPastaSaida.setText(chooser.getSelectedFile().getAbsolutePath());
} catch (final Exception ioException) {
ioException.printStackTrace();
}
} else {
}
}
public void copiarArquivos(Path origem, Path destino) throws IOException {
// se é um diretório, tentamos criar. se já existir, não tem problema.
if(Files.isDirectory(origem)){
Files.createDirectories(destino);
// listamos todas as entradas do diretório
DirectoryStream<Path> entradas = Files.newDirectoryStream(origem);
for (Path entrada : entradas ) {
// para cada entrada, achamos o arquivo equivalente dentro de cada arvore
Path novaOrigem = origem.resolve(entrada.getFileName());
Path novoDestino = destino.resolve(entrada.getFileName());
// invoca o metodo de maneira recursiva
copiarArquivos(novaOrigem, novoDestino);
}
} else {
// copiamos o arquivo
Files.copy(origem, destino);
}
}
private void btnExecutar_actionPerformed(ActionEvent e) {
Path origem = Paths.get(fileOrigem);
Path destino = Paths.get(fileDestino);
try {
Files.walkFileTree(origem, new CopiadorDeArquivos(origem, destino));
} catch (IOException f) {
f.printStackTrace();
}
}