Criação de diretórios com a data atual

Olá!

Estou tentando criar uma estrutura de pastas com a data atual. Até deu certo, eu só gostaria de saber se tem uma forma melhor/mais certa de se fazer.

Precisa também checar se o diretório já existe, né? Tenho medo dele sobrescrever o diretório

Meu código:

public class Test {
    public static void main(String[] args) {
        Calendar data = Calendar.getInstance();
        String dataConcat = data.get(Calendar.DAY_OF_MONTH)+"/"+data.get(Calendar.MONTH)+"/"+data.get(Calendar.YEAR);
        File dir = new File(System.getProperty("user.home"), "Eventos/"+dataConcat);
        dir.mkdirs();
    }
}

O resultado:

/home/curiosity/Eventos/29/9/2018

Bom dia!
você pode testar se existe utilizando

if(!dir.exists()){
dir.mkdirs();
}

Outra coisa. Da forma que esta, o sistema ira criar uma pasta 29, dentro dela uma pasta 9 e dentro uma pasta 2018. O sistema ira entender que o / é diretório. Se não for esta a idéia, troque a / por outra coisa como um _ por exemplo

1 curtida

Era essa ideia mesmo! Eu fiz a checagem do diretório dessa forma.

A minha dúvida é se a concatenação é certa de se fazer assim. Eu pensei em usar StringBuilder, mas não sei usar e.e jashusa

Assim pelo visto funciona bem. Só não gostei muito que o mês saiu em um único dígito, tem como transformar o “9” em “09”?

Obrigado!

Você pode fazer assim

SimpleDateFormat formatoData = new SimpleDateFormat(“dd/MM/yyyy”);

String caminho = formatoData.format(new Date());

ou

String caminho = formatoData.format(data.getTime());

1 curtida

eu usaria String.format(...) pra deixar um pouco mais legivel ( “Eventos/%d/%d/%d” )

Ah menos que seja apenas um teste ou exercício para entender como funciona, eu também recomendo você criar as pastas no formato ano/mes/dia.

Isso te dá benefícios como:

  • Conteúdo do mesmo ano ou mês na mesma pasta
  • Facilita ver o progresso de um ano ou mês
  • Facilitar apagar conteúdo antigo ou mover para outro lugar

Fiquei curioso: Como assim no formato // ?

Eu tinha colocado as palavras “ano”, “mes” e “dia” entre tags e nao apareceu aqui. Corrigido.