Olá, preciso fazer uma busca de arquivos no hd pelo nome(ou parte dele).
A classe de procura:
public class Buscar {
public ArrayList buscarArquivoPorNome(String palavra, File caminhoInicial) {
ArrayList lista = new ArrayList();
try {
File arquivo = (caminhoInicial);
lista = buscar(arquivo, palavra, lista);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Caminho Inválido");
}
return lista;
}
public ArrayList buscar(File arquivo, String palavra, ArrayList lista) {
if (arquivo.isDirectory()) {
File[] subPastas = arquivo.listFiles();
for (int i = 0; i < subPastas.length; i++) {
lista = buscar(subPastas[i], palavra, lista);
if (arquivo.getName().equalsIgnoreCase(palavra)) {
lista.add(arquivo.getAbsolutePath());
} else if (arquivo.getName().indexOf(palavra) > -1) {
lista.add(arquivo.getAbsolutePath());
}
}
} else if (arquivo.getName().equalsIgnoreCase(palavra)) {
lista.add(arquivo.getAbsolutePath());
} else if (arquivo.getName().indexOf(palavra) > -1) {
lista.add(arquivo.getAbsolutePath());
}
return lista;
}
}
A classe onde o usuario digitaria o nome do arquivo em um jTextField e a partir de um botao executaria a procura, segue o actionPerformed do botao:
String nome = txtNome.getText();
String caminho = "c:\";
Buscar b = new Buscar();
ArrayList res = b.buscarArquivoPorNome(nome, caminho);
System.out.println("" + res);
ele busca certinho e tal, mas só no diretorio c:, só q ele nao pesquisa nos subdiretorios, ex: meus documentos, teria jeito dele procurar e, todo os diretorios do sistema?
vlw