Olá. Eu comecei a estudar a classe NIO e peguei um código que move todos os arquivos de uma pasta com uma determinada extensão. Não aparece nenhuma mensagem de erro, mas tambem ele não move nada. Será que alguem poderia me ajudar?
public List<Path> buscarArquivosPorNome(Path caminho, String extensao) throws IOException {
ListarPorExtensao visitor = new ListarPorExtensao(extensao);
Files.walkFileTree(caminho, visitor);
return visitor.getLista();
}
public void copiarArquivo(Path caminho, String extensao, Path destino) throws IOException {
List<Path> lista = buscarArquivosPorNome(caminho, extensao);
for (Path file : lista) {
Path relativo = caminho.relativize(file);
Path arquivo = destino.resolve(relativo);
Files.createDirectories(arquivo.getParent());
Files.copy(file, arquivo);
}
}
private static class ListarPorExtensao extends SimpleFileVisitor<Path> {
private final String extensao;
private final List<Path> lista = new ArrayList<Path>();
public ListarPorExtensao(String ext) {
extensao = ext;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
FileVisitResult result = super.visitFile(file, attrs);
if (result == FileVisitResult.CONTINUE) {
if (attrs.isRegularFile() && file.toString().endsWith(extensao)) {
lista.add(file);
}
}
return result;
}
public List<Path> getLista() {
return lista;
}
public static Path get(String first)
{
return FileSystems.getDefault().getPath(first);
}