Как найти последний измененный файл в каталоге в java?Как найти последний измененный файл в каталоге на 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;
}
Я думал, что использовать пользовательский компаратор будет чище, но этот способ выполняется быстрее. –
с использованием компаратора - хорошая практика, но это всего лишь простая задача и может обойтись без нее. – Bozho
нет. тем больше длинное значение, чем позже файл будет изменен. Если это было причиной нисходящего потока, не стесняйтесь его отменить;) – Bozho
Объединить эти два:
- Вы можете получить время последнего изменения файла с помощью
File.lastModified()
. - Чтобы просмотреть все файлы в каталоге, используйте
File.listFiles()
.
Обратите внимание: в Java объект java.io.File
используется как для каталогов, так и для файлов.
Вы можете получить время последней модификации с помощью метода File.lastModified(). Моим предложенным решением было бы реализовать пользовательский Компаратор, который сортирует в lastModified() - порядке и вставляет все файлы в каталог в TreeSet, который сортирует, используя этот компаратор.
Непроверено пример:
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;
}
Кастинг (a.lastModified() - b.lastModified())
к int
может привести к неожиданным результатам.
Ваша задача аналогична: How to get only 10 last modified files from directory using Java?
Просто измените код фильтра, чтобы иметь только один файл и метод принимает должен просто сравнить две метки времени.
Непроверенные код:
class TopFileFilter implements FileFilter {
File topFile;
public boolean accept(File newF) {
if(topFile == null)
topFile = newF;
else if(newF.lastModified()>topFile.lastModified())
topFile = newF;
return false;
}
}
Теперь, вызов dir.listFiles с экземпляром этого фильтра в качестве аргумента. В конце фильтр filter.topFile является последним измененным файлом.
import org.apache.commons.io.comparator.LastModifiedFileComparator;
import org.apache.commons.io.filefilter.WildcardFileFilter;
...
...
/* Get the newest file for a specific extension */
public File getTheNewestFile(String filePath, String ext) {
File theNewestFile = null;
File dir = new File(filePath);
FileFilter fileFilter = new WildcardFileFilter("*." + ext);
File[] files = dir.listFiles(fileFilter);
if (files.length > 0) {
/** The newest file comes first **/
Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
theNewestFile = files[0]
}
return theNewestFile;
}
Это отлично работает для меня
String path = "C:\\Work\\Input\\";
File dir = new File(path);
File[] files = dir.listFiles();
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.valueOf(f2.lastModified()).compareTo(
f1.lastModified());
}
});
for (int index = 0; index < files.length; index++) {
// Print out the name of files in the directory
System.out.println(files[index].getName());
}
}
Предположим, что переменная thePath
содержит каталог мы хотим найти, следующий фрагмент кода возвращает последний измененный файл внутри него:
Files.walk(thePath)
.sorted((f1, f2) -> -(int)(f1.toFile().lastModified() - f2.toFile().lastModified()))
.skip(1)
.findFirst()
Что он делает, сначала сортируйте файлы по времени их последней модификации в обратном порядке, затем пропустите сам каталог и, наконец, возьмите первый элемент в потоке (который является последним модифицировано один).
Хотя этот фрагмент кода может быть решением, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – derM
- 1. Найти последний измененный файл в каталоге с пробелом
- 2. Найти последний файл в каталоге
- 3. найти последний файл в каталоге
- 4. Как получить последний измененный файл в каталоге с Cakephp
- 5. Как найти последний исполняемый файл в каталоге
- 6. Найти последний измененный файл во всех подпапках
- 7. Bash Script, чтобы найти последний измененный файл
- 8. Как сжать последний измененный файл в C#
- 9. Как найти последний последний измененный каталог на ftp
- 10. Найти последний файл сборки в каталоге
- 11. Как выбрать папку, содержащую последний измененный файл?
- 12. Java: как получить последний (последний измененный) каталог по пути
- 13. Получить последний измененный файл C
- 14. Python Регулярное выражение, чтобы найти последний файл в каталоге
- 15. Найти последний измененный файл в соответствии с простым выражением выражения регулярного выражения в каталоге
- 16. как найти последний измененный файл и затем извлечь его
- 17. Найти последний измененный файл в Windows, не зная папку
- 18. Найти последний измененный файл и получить результат в переменной
- 19. Как выбрать последний измененный файл из каталога?
- 20. Инструменты программирования: «меньше», который знает, как смотреть на последний измененный файл в каталоге
- 21. PHP: последний файл в каталоге
- 22. Как получить последний измененный файл из списка файлов
- 23. Получить последний файл в каталоге
- 24. Python ssh найти последний файл
- 25. Linux: последний файл в каталоге
- 26. Как открыть последний измененный документ в файле?
- 27. Получить последний файл в каталоге, Node.js
- 28. Выберите последний измененный файл из каталога
- 29. Как получить предыдущий (n-й) последний измененный файл в партии
- 30. Проверить последний измененный каталог
Вы спрашиваете, как сортировать по последнему измененному времени? Или вам нужен алгоритм, который найдет максимум последнего измененного времени? Они кажутся очевидными решениями; что вы действительно просите? –