Olá pessoal!! Estou tentando criar um método que procure por arquivos no computador de forma recursiva, mas ele simplesmente não funciona!!
Vou anexar o código aqui (que é relativamente curto) e em seguida faço os comentários...
// Por padrao o arquivo a ser procurado ainda nao foi encontrado no inicio da execucao do codigo
static String resultado = "Arquivo nao encontrado!";
// Procura pelo arquivo nomeArquivo dentro de um diretorio
public static void procuraArquivo(File dir, String nomeArquivo) {
if (dir.isDirectory()) {
String[] children = dir.list();
if(children != null) {
for (int i = 0; i < children.length; i++) {
if (children[i] == nomeArquivo){
resultado = dir.getPath();
break;
}
else
// Chamada recursiva para percorrer os subdiretorios
procuraArquivo(new File(dir, children[i]), nomeArquivo);
}
}
}
else if (dir.toString() == nomeArquivo) resultado = dir.getPath();
}
Bom, a idéia básica é a seguinte: antes de chamar o método, eu crio um arquivo novo definido como o diretório raiz (em Linux é "\" e no Windows é o "C:\").
Como a raiz é um diretório, ele entra na condição inicial e cria uma lista com todos os objetos da raiz (arquivos e diretórios).
Daí, para cada elemento dessa lista, ele verifica se este elemento é ou não o arquivo procurado. Se não for, ele chama recursivamente o método.
Na recusrão, caso tenhamos um diretório, ele procura por todos os seus elementos novamente... Se for um arquivo ele apenas verifica se o nome do mesmo é o arquivo procurado a princípio.
A resposta é guardada numa variável estática da classe, externa ao método, e que guarda o diretório do arquivo encontrado.
Será que alguém sabeme dizer porque a resposta é sempre: "Arquivo nao encontrado!" ?? :cry: :cry: :cry:
Obrigado desde já e abraços a todos!! :D