[RESOLVIDO] retornar uma lista com nome e última modificação dos arquivos

3 respostas
R

Buenas.
Tenho uma pequena aplicação que faz upload e download de arquivos .pdf em uma pasta no servidor (jsf 2 + primefaces).
Bem, estava pensando em gerar uma lista com nome e a data de modificação do arquivo para mostrar em tela.
Consegui pegar o nome dos arquivos e retorna-los em uma lista, mas, não estou conseguindo trazer a data de modificação.

O método que retorna a lista com os nomes é este…

public List<String> preenchelista() {
        String[] nomes;
        File diretorio = new File("/pasta/dos/arquivos/");
        nomes = diretorio.list(); //lista os arquivos
        lista = Arrays.asList(nomes); //passo de Array para List
        Collections.sort(lista); //ordeno a lista
        return lista;
    }

Sei que existe o .lastModified() que retorna a última modificação, mas não estou conseguindo bolar um jeito de trazer nome e data.
E aí, alguém já fez isso. Agradeço se puderem me ajudar.
Abraço…

3 Respostas

D

A lista é uma String.
Você pode criar um loop (for) e, instanciar uma variável Date (java.util) que recebe como argumento um long (exatamente o que retorna o lastModified). Então, faça o parse e aí concatene à String do nome.

E

Outra forma é retornar uma List e não uma List. Em vez de usar o método “list”, use o método “listFiles”.

Se você precisa ordenar essa lista por nome, você pode passar um comparador (java.util.Comparator) para o método Collections.sort que compare por nome. Se precisar ordenar por data de última modificação, você pode passar um comparador que compare por data de última modificação.

R

Obrigado drsmachado e entanglement, era muito mais fácil do que eu pensava.
Dei uma olhada nessa classe File e tudo se resolveu ehehe
O que eu fiz foi criar uma classe Arquivo (com os atributos que eu queria) e uma lista a partir dela.
Aí ficou fácil. A ordenação eu faço no xhtml (com o componente p:dataTable)
Bem, o código ficou assim.

public List<Arquivos> listaArquivos2() {
        DateFormat formatData = new SimpleDateFormat("dd/MM/yyyy");
        File diretorio = new File("/pasta/dos/arquivos/");
        File arqs[] = diretorio.listFiles();
        for (int i = 0; i < arqs.length; i++) {
            File arquivo = arqs[i];
            String nome = arquivo.getName();
            String dt_ateracao = formatData.format(new Date(arquivo.lastModified()));
            lista.add(new Arquivos(nome, dt_ateracao));
        }
        return lista;
    }

Se virem algo de errado ou que possa melhorar, podem falar ehehe.
Mas a priori, atendeu o que eu queria.
Abraço.

Criado 28 de junho de 2011
Ultima resposta 28 de jun. de 2011
Respostas 3
Participantes 3