Возраст файла в Java

#java #file #modulo

#java #файл #modulo

Вопрос:

Мне нужно определить возраст файла на основе его имени. Все файлы должны соответствовать соглашению об именовании, подобному этому: ДД-ММ-ГГГГ.

Я могу создать программу для определения имен файлов на основе того, сколько дней / месяцев прошло и т.д., Используя оператор modulus, Но, похоже, я не могу понять, как вычислить возраст по имени. Приветствуется любой совет.

Любые примеры кода / -предложения предпочтительнее должны быть на Java.

С уважением, Мартин

Комментарии:

1. Вы могли бы извлечь дату из части имени файла с датой и проанализировать ее с помощью SimpleDateFormat.

2. Сохраните дату создания файла и текущую дату в java.util. Укажите дату, и затем вы можете легко вычесть два, чтобы узнать, сколько лет файлу.

Ответ №1:

Вы можете использовать DateFormat для разбора даты, а также для ее форматирования.

Непроверенный:

 String name = file.getName();
String datePortion = /*extract date portion*/;

DateFormat fmt = new SimpleDateFormat("dd-MM-yyyy");
Date fileDate = fmt.parse(datePortion);
long msBetweenDates = new Date().getTime() - fileDate.getTime();
  

Способ извлечения части даты зависит от вашей схемы именования файлов, но это, вероятно, так же просто, как:

 String datePortion = name.replaceAll(".*((\d) -(\d) -(\d) ).*", "$1");
  

Комментарии:

1. Я думаю, мне удалось заставить это работать таким образом, мне просто нужен способ сравнения с шестью месяцами, поскольку шесть месяцев в миллисекундах становятся большим числом и убивают промежуточную привязку.

2. @Martin: это может нарушить границы int, но вы увидите, что я использую long, с которым не должно возникнуть проблем.

Ответ №2:

если даты последнего изменения достаточно, вы можете использовать:

     File file = new File("C:/file.txt");
    Date date = new Date(file.lastModified());
    System.out.println(date);
  

Комментарии:

1. Я пробовал это, но это невозможно использовать, поскольку файлы могут постоянно изменяться, фильтр должен видеть, когда они были созданы. Но спасибо.