Как читать файлы каталога по порядку изменения времени - PullRequest
1 голос
/ 09 августа 2011

У меня есть один вопрос для чтения файлов каталога. Во-первых,

String[] files = sourceDirectory.list();

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

В документации File.list() он не может гарантировать порядок согласованности. Как я могу читать файлы в порядке?

Второй вопрос: я хочу вычислить интервал времени между 2 сообщениями из имени сообщения, потому что имена сообщений имеют информацию о отметке времени. Например,

trace2011_Aug_3__0_0_1 и trace2011_Aug_3__0_0_5. Как я могу преобразовать строковые значения в объект Date и вычислить разницу между ними?

Большое спасибо.

Ответы [ 5 ]

4 голосов
/ 09 августа 2011

Получите File s, используя listFiles(), а затем отсортируйте их по последнему измененному времени, используя File.lastModified().

File[] files = sourceDirectory.listFiles();

Arrays.sort( files, new Comparator<File>() {
    public int compare( File a, File b ) {
        return a.lastModified() - b.lastModified();
    }
});

Чтобы преобразовать имя файла с датой в нем, извлеките часть даты, используя String.substring(), а затем преобразуйте эту результирующую подстроку в дату. После этого получить разницу будет легко.

2 голосов
/ 09 августа 2011

Для первой половины вашего вопроса:

File[] files = sourceDir.listFiles();

Arrays.sort(files, new Comparator<File>() { 
    public int compare(File f1, File f2) {
        return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
    }
});

// Now files should be sorted by timestamp.
0 голосов
/ 09 августа 2011

Первый вопрос: см. Ответ tskuzzy.

Второй вопрос: напишите класс / метод синтаксического анализа и используйте метод substring для преобразования строк в дату.(на самом деле только вы знаете, как строится строка).Может быть Apache's String Utils поможет вам в этом.

0 голосов
/ 09 августа 2011

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

http://www.daniweb.com/software-development/java/threads/51670

Что касается разбора даты, вы можете создать собственный форматер даты и использовать его для анализа значений даты:

http://exampledepot.com/egs/java.text/ParseDate.html

Как только у вас будет получен разбор даты, используйте этот метод, чтобы получить разницу:

Как вычислить временной интервал в Java и отформатировать вывод?

Удачи!

0 голосов
/ 09 августа 2011

Относительно вашего первого вопроса: просто используйте File.listFiles() и отсортируйте полученный массив File экземпляров, используя Arrays.sort и пользовательский компаратор, сравнивающий значение lastModified файлов.Затем выполните итерацию по отсортированному массиву.

По второму вопросу: используйте String.substring, чтобы извлечь часть даты из сообщения, и используйте SimpleDateFormat с соответствующим шаблоном, чтобы изменить каждую строку в объект Date.,Интервал - это просто разница между временем в миллисекундах (полученным через Date.getTime()) двух дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...