Retornar lista de arquivos (date pattern)

4 respostas
maugzoide

Boa noite,

Estou à procura de um caminho de como retornar uma lista de arquivo de um diretório com um determinado pattern.
Por exemplo: tenho uma lista de arquivos como arquivo_sao_paulo_ddmmyyyyy.txt or arquivo_mmyyyy.zip.
Eu quero retornar a lista dos arquivos de acordo com o pattern requerido.
Digamos que tenho que procurar arquivo_sao_paulo_ddmmyyyy.txt. No caso, eu quero resgatar os arquivos arquivo_sao_paulo09072012.txt.
Alguma idéia?
PS.: creio muito que eu deva usar regex, mas não sei se há um jeito mais simples, sem reinventar a roda.

4 Respostas

tveronezi

http://docs.oracle.com/javase/6/docs/api/java/io/FileFilter.html

if(pathname.getName().startsWith(“arquivo_sao_paulo”))

maugzoide

Isso não funcionaria.
Pegaria arquivos como “arquivo_sao_paulo_qualquer_coisa.txt”.
O caso é pegar especificamente arquivos que tenham a máscara de data passada.

tveronezi

Altere de acordo com as tuas necessidades…
[]s,
Thiago

@Test
    public void test() throws ParseException {
        final String fileName = "arquivo_sao_paulo09072012.txt";
        final DateFormat df = new SimpleDateFormat("ddMMyyyy");
        final Calendar cal = Calendar.getInstance();


        //http://stackoverflow.com/questions/2367381/extract-numbers-from-a-string-java
        final Pattern p = Pattern.compile("-?\\d+");
        final Matcher m = p.matcher(fileName);
        while (m.find()) {
            final String strDate = m.group();
            final Date date = df.parse(strDate);
            cal.setTime(date);
            if (cal.get(Calendar.DAY_OF_MONTH) == 9
                    && cal.get(Calendar.MONTH) == (7 - 1) //JANUARY is 0
                    && cal.get(Calendar.YEAR) == 2012) {
                return;
            }
        }

        org.junit.Assert.fail("Unable to find date");
    }
}
maugzoide

Vou testar.
Obrigado pela ajuda. Sempre é bem-vinda.

Criado 9 de julho de 2012
Ultima resposta 10 de jul. de 2012
Respostas 4
Participantes 2