Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Проблемы с методом File.isDirectory()

#java


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

Same_name.RTF
Same_name.RTF.p7s


И первый файл этот метод считает папкой. Настойчиво и непреклонно.
Как все таки определить папка это или файл?


Точку искать не предлагайте, там есть папки с ней. 
Первое расширение может быть разным. 
Поиск идет в сетевой папке.


Изначальный вариант:

String[] dirList = curentFolder.list((File dir, String name) -> return dir.isDirectory());

    


Ответы

Ответ 1



Тут нет никакой проблемы, вы не правильно используете filter. А именно, если посмотреть javadoc, то там написано: @FunctionalInterface public interface FilenameFilter { /** * Tests if a specified file should be included in a file list. * * @param dir the directory in which the file was found. * @param name the name of the file. * @return true if and only if the name should be * included in the file list; false otherwise. */ boolean accept(File dir, String name); } т.е. dir это текущая директория, в которой были найдены файлы, естественно ваш фильтр всегда будет возвращать true А вот пример кода, который должен делать то, что вы хотите List directories = Files .list(Paths.get("current_directory")) .filter(Files::isDirectory) .map(Path::toString) .collect(Collectors.toList()); System.out.println(directories);

Комментариев нет:

Отправить комментарий