2015-02-04 4 views
0

У меня есть папка, в которой я получаю файлы из другого приложения и хранятся в папке. Формат файлаДинамическое чтение входного файла на основе DDMMYYYY в java

«ABC_DIFL_MMDDYYYYmillisecs.log»

Я не хочу, чтобы передать имя файла вручную, я хочу, чтобы прочитать файл динамически на основе текущей даты. Каковы возможные способы сделать это ???

ТИА

ответ

3

Вы можете использовать DateFormat класс взять объект Date и форматировать его, поэтому он может быть использован как часть имени файла.

DateFormat df = new SimpleDateFormat("MMddyyyy"); 
String filename = "ABC_DIFL_" + df.format(new Date()) + ".log"; 

Вы можете прочитать о формате, который SimpleDateFormat на the API page.

У вас также есть более сложная проблема с поиском файла с миллисекундным суффиксом. Это может быть создано из объекта Date, который имеет миллисекундную точность, но откуда вы знаете, какая миллисекунда является правильной?

Что вам нужно сделать, так это взять список файлов в каталоге и проверить их, чтобы найти тот, который начинается с сегодняшней даты. Это можно сделать следующим образом:

public File findTodaysFirstFile(File directory) { 
    DateFormat df = new SimpleDateFormat("MMddyyyy"); 
    String prefix = "ABC_DIFL_" + df.format(new Date()); 

    for (File current : directory.listFiles()) { 
     if (current.getName().startsWith(prefix)) { 
      return current; 
     } 
    } 
    // handle failure here, throw an exception or return null as you prefer 
} 
+1

Вам нужно 'dd' там. 'DD' дает день в году. Также добавьте расширение '.log'. –

+1

исправлено, спасибо! –

+0

О, извините, спасибо за ответ, но дата также добавила миллисекунды. Я редактирую свой вопрос. Вот где мое замешательство было ...! Извините, что беспокою вас после того, как вы ответили. –

Смежные вопросы