Galera do GUJ, boa noite.
Bom, eu deverei criar uma aplicação que leia um diretório num cd, pegue todos os arquivos deste diretório e inclua o nome destes arquivos em uma tabela (farei alguns truques com o nome do arquivo tirando traços e pontos)…
Ou seja, preciso tipo fazer um dir do diretório e jogar o resultado para uma coleção ou array.
Alguem tem idéia de como posso fazer isto?
Qual a api mais apropriada para fazer esta tarefa?
Muito obrigado mais uma vez
Dica: você precisa usar uma rotina recursiva, tal como esta:
/**
* Rotina utilitária para percorrer um diretório.
* Note que o padrão é aplicado
* apenas aos arquivos, não aos diretórios.
* @param files <code>List < File > </code> onde os arquivos serão acrescentados.
* @param dir Diretório
* @param pat Padrão a aplicar aos arquivos.
*/
public static void addRecursive(List files, File dir, Pattern pat) {
exit: {
if (dir == null || !dir.isDirectory()) {
break exit;
}
File[] entries = dir.listFiles();
// pode ser que retorne null, porque não há permissão de leitura
if (entries == null) {
break exit;
}
for (int i = 0; i < entries.length; ++i) {
File entry = entries[i];
if (entry.isDirectory()
&& !(".".equals(entry.getName())
|| "..".equals(entry.getName()))) {
addRecursive(files, entry, pat);
} else {
if (pat.matcher(entry.getName()).matches()) {
files.add(entry);
}
}
}
}
}
Para chamar esta rotina, por exemplo para o diretório “D:\teste” e acrescentando apenas os arquivos *.doc :
List files = new ArrayList();
File dir = new File ("D:/teste");
Pattern pat = Pattern.compile (".*\.doc", Pattern.CASE_INSENSITIVE);
addRecursive(files, dir, pat);