Как я нахожу последний измененный файл в каталоге в Java?
private File getLatestFilefromDir(String dirPath){
File dir = new File(dirPath);
File[] files = dir.listFiles();
if (files == null || files.length == 0) {
return null;
}
File lastModifiedFile = files[0];
for (int i = 1; i < files.length; i++) {
if (lastModifiedFile.lastModified() < files[i].lastModified()) {
lastModifiedFile = files[i];
}
}
return lastModifiedFile;
}
Вы можете получить время последней модификации, используя метод file.lastmodified (). Мое предложенное решение было бы реализовать пользовательский компаратор, который сортирует в LastModified () - заказа и вставлять все файлы в каталоге в элементах, которые сортируют этот компаратор.
Неповедочный пример:
SortedSet<File> modificationOrder = new TreeSet<File>(new Comparator<File>() {
public int compare(File a, File b) {
return (int) (a.lastModified() - b.lastModified());
}
});
for (File file : myDir.listFiles()) {
modificationOrder.add(file);
}
File last = modificationOrder.last();
Решение, предложенное Bozho, вероятно, является быстрее, если вам нужен только последний файл. С другой стороны, это может быть полезно, если вам нужно сделать что-то более сложное.
Компаратор в растворе Эмиля будет уборщиком таким способом
public int compare(File a, File b) {
if ((a.lastModified() < b.lastModified())) {
return 1;
} else if ((a.lastModified() > b.lastModified())) {
return -1;
}
return 0;
}
литье (а.lastmodified () - b.lastmodified ())
- INT
может вызвать неожиданные результаты.
Вы пытались аннотировать исключение с помощью @ WebFault
? Кроме того, реализуется getFureInfo ()
?
EDIT: Я понимаю, что мой ответ был недостаточно подробным. Как напоминается в , этот поток (например):
Спецификация JAX-WS 2.0 требует что исключение аннотировано с помощью
@ WebFault
должен иметь два конструктора и один метод [получения для получения информации об ошибке]:WrapperException (строковое сообщение, FureBean fureInfo) WrapperException (строковое сообщение, FureBean fiveInfo, причина, допускающая изменение) FureBean getFureInfo ()
Исключение оболочки
заменено на имя исключения, иFureBean
заменяется классом имя, реализующее компонент отказа. Компонент отказа - это компонент Java, который содержит информацию об ошибке и используется клиентом веб-службы знать причину ошибки.
Это подробно описано в разделе 2.5 Отказ спецификации JAX-WS. Соответствует ли этому ваше исключение? Можете ли вы опубликовать код?
OP прав. В соответствии со спецификацией 2,1, раздел 3,7 Исключение для конкретной услуги, не требуется использовать аннотацию @ WebFault
, JAX-WS может динамически генерировать фасоль обертки для исключений, которые не соответствуют образцам, описанным в разделе 2,5 (просто предоставьте получатель информации, которая должна присутствовать в сбое). Для исключений, соответствующих образцов, описанным в разделе 2,5 (т.е. исключений, имеющих метод getFureInfo
и аннотацию @ WebFault
), при сопоставлении исключения со схемой XML в качестве входных данных для JAXB используется FureBean .
Поэтому предложенное выше решение (соответствующий образец, описанному в разделе 2,5) является лишь обходным путем. Генерация фасоли обертки должна работать только для других исключений. И я не знаю, почему это не получается.
-121--1419988-Да! Да! пожалуйста, начните с Джит.
Я разработчик с привычкой пробовать новые вещи/методы для уже стабильного приложения. До того, как я встретил Git, я продолжал копировать мой текущий стабильный проект в папку с отметкой даты папки, чтобы запомнить, где я был, и которая была стабильной версией, тогда я начал бы работать с кодом.
Но с Git у меня нет проблем пробовать новые трюки в моем коде, то, что я делаю, это просто ветвь от моего мастера (главное стабильное приложение) делать мои попытки, и если я проваливаю то, что я пытался просто отбросить ветвь и быстро переключиться обратно на мой Мастер, который все еще цела, безопасна и стабильна. И если я успешен (который большую часть времени не) я просто объединить ветвь к хозяину, то отбросить ветвь. Как мило.
Ветвление в Гите заставило меня упасть с ним головой над пятками. Попробуйте
-121--3030621-Объединить эти два:
File.lastModified ()
. File.listFiles ()
. Обратите внимание, что в Java объект java.io.File
используется как для каталогов, так и для файлов.