#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. Я пробовал это, но это невозможно использовать, поскольку файлы могут постоянно изменяться, фильтр должен видеть, когда они были созданы. Но спасибо.