Boa tarde,
Estou desenvolvendo uma aplicação na qual eu verifico a data de modificação de um arquivo, e verifico se esta data é inferior a 7 dias. Se for, exibo uma mensagem ao usuário.
Pois bem, eu consigo ver a data de modificação, porém, não sei como fazer esta verificação.
Sei que preciso pegar a data de hoje e comparar a data do arquivo, mas não sei como fazer. Pesquisei e testei algumas opções que eu encontrei, mas sem sucesso.
Segue um trecho do meu código.
Agradeço desde já.
File arquivo = new File(CaminhoBanco + “ADMDADOS\BACKUP\Winadmnet.zip”);
if (arquivo.exists()) {
DateFormat formatData = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String data = formatData.format(new Date(arquivo.lastModified()));
DataBackup = data;
if (DatadoArquivo <= 7Dias) { // Aqui que estou com dificuldades
//Alerta o usuário
} else {
}
}
Vamos lá, primeiramente vamos entender como funciona o sistema de datas, pense como converter a data e hora em números isso mesmo inteiro, vamos pensar aqui como funciona o sistema de data, temos Anos, Meses, Dias, Horas, Minutos, Segundos, Milissegundos, você pode utilizar o Milissegundos para calcular basicamente tudo, vamos se basear pela era unix
Vamos a formula
1 Dia = 24 Horas
1 Hora = 60 Minutos
1 Minuto = 60 Segundos
1 Segundo = 100 Milissegundos
Ou seja para saber quantos Milissegundos tem 7 dias independente da data,
100 * 60 * 60 * 24 * 7
Milissegundos = 60480000 MS
Agora vem a pergunta da logica, Pense o seguinte
O arquivo tem a data que você pega em ms, vamos chamar de ms_arquivo, os sete dias em ms vamos chamar de ms_limit, então vamos pegar a data de hoje em em ms e chamar de ms_time, agora vamos aos calculos, Se pegar o ms_time - ms_limit vamos ter a data minima que o arquivo pode ter em ms, depois é só aplicar a condição para ver se ele é maior que o atual, segue a função para voce entender
import java.io.File;
import java.util.Calendar;
/**
*
* Author Gleison M. Vasconcelos
*
* */
public class FileUtil {
/**
*
* @param dias
*
* ex 7 dias
*
* */
public boolean isFileinDate(int dias, File file) {
if(file == null || file.exists() == false || ! file.isFile()) {
// Arquivo invalido
return false;
}
// MS atual
long ms_atual = Calendar.getInstance().get(Calendar.MILLISECOND);
// Dias maximos do arquivo
long ms_data = 100 * 60 * 60 * 24 * dias;
// MS minimo que o arquivo pode ter
long ms_min = ms_atual - ms_data;
long ms_file = file.lastModified();
// Verifica se o arquivo está dentro dos 7 dias
if(ms_file > ms_min) {
// Está no prazo de 7 dias
return true;
}
// Prazo maior de 7 dias
return false;
}
}