Fala galera
sei que consigo listar os arquivos de um diretório assim:
if (file.isDirectory()){
String[] sub = file.list();
for (int i=0; i<sub.length; i++) {
System.out.println(sub[i]);
}
}
ou algo parecido
mas e seu quiser listar ordenado por tipo (diretórios primeiro e depois arquivos) ou por nome (ordem alfabetica)? existe alguma função do java que faça isso automaticamente quando aciono o comando “list()”?
Ou eu teria que analisar todos os itens e jogar para uma outra lista colocando assim em ordem?
vlw, obrigado desde já
Cara, isso é fácil de resolver.
Você pode verificar se cada dado que você achou é um diretório ou um arquivo e adicionar eles em duas ArrayLists separadas. Depois de percorrer o diretório todo, basta chamar
Collections.sort(arrayList)
Ao fazer isso, seus dois arrays estarão ordenados.
vlw cara, realmente eu pensei nisso, mas achei que o proprio java poderia ter algo que já ordenava os arquivos para mim
mas assim já está ótimo
o código pra ordenar:
public List<String[]> listar(File dirfile, int opcao) throws IOException{
List<String[]> lista = new ArrayList<String[]>();
File arquivos[] = dirfile.listFiles();
for (int i=0; i<arquivos.length;i++){
String valores[] = new String[3];
if (opcao==0 && arquivos[i].isDirectory()){
valores[0] = arquivos[i].getName();
valores[1] =String.valueOf(arquivos[i].lenght());
lista.add(valores);
}
if (opcao == 1 && !arquivos[i].isDirectory()){
valores[0] = arquivos[i].getName();
valores[1] =String.valueOf(arquivos[i].lenght());
lista.add(valores);
}
}
return lista;
}
para usá-lo é preciso criar duas listas, onde a primeira vc passa o diretorio raiz e a opcao 0 para diretorio, e a segunda passa a opcao 1 para arquivos
no método ele retorna um array com duas posições de string, a primeira contendo o nome do arquivo e a segunda o tamanho
e a respeito da ordenação por nome, o proprio list já faz isso, só fui perceber depois rsrs
vlw até +
Não é bem assim. Isso é um efeito colateral de você estar listando um diretório em um disco formatado com NTFS ou algum outro file system que mantém os arquivos ordenados por nome. Se for rodar o mesmo programa no Linux em um disco EXT3, provavelmente os arquivos virão totalmente desordenados.
Se for listar um pendrive (que normalmente é formatado com FAT ou ExFAT) essa listagem não vai ser ordenada.