Listar arquivos sem usar recursividade

2 respostas
_

Gostaria que me ajudassem.
Estou querendo criar uma List que contenha todos os arquivos de um diretório, incluindo arquivos dos subdiretorios dentro deste. Estou usando o objeto File(“c:\”), so que o metodo list() lista apenas os arquivos de “c:”, nao os subdiretorios…

Eu consegui criar um metodo recursivo que chama a si mesmo quando encontra uma pasta dentro da outra, so que queima muita memoria, e dá um FerrouTudoException :twisted:

Se algem souber um modo de guardar todos os arquivos do disco “c:”, incluindo subpastas, sem utilizar recursividade, por favor me ajudem!!!

Valeu()

2 Respostas

F

primeiro, uma dica, nao use new File(“C:”); pq soh vai rodar no ruwindows, use o metodo estatico da classe File listRoots(), que retorna um array de Files para as raises… no ruwindows retornaria nao soh o C: como todas as unidades, e no linux iria retornar o /

pra listar as subpastas, teste isso:

File list[] = File.listRoots();
ArrayList arquivos = new ArrayList(), aux = new ArrayList();
for (int i = 0; i < list.length; i++) aux.add(list[i]);
int s;
do{
 s = aux.size();
 list = new File[s];
 for (int i = 0; i < s; i++){
  list[i] = (File)aux.get(i);
 }
 aux = new ArrayList();
 // talvez seja bom chamar System.gc() aki...
 for (int i = 0; i < list.length; i++){
  if (list[i].isDirectory()) aux.add(list[i]);
  else arquivos.add(list[i]);
 }
}while (aux.size() > 0);

nem testei… mas deve funcionar…

_

Oi,
Eu tambem nao testei este codigo, mas acho que so funciona para um único diretório… Nao funcionaria se tivesse um diretorio dentro de um diretorio e assim por diante.

Se alguem souber, me ajudem, ainda vou testar este código…

obrigadoPelaAjuda()

Criado 2 de novembro de 2004
Ultima resposta 6 de nov. de 2004
Respostas 2
Participantes 2