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

275
13 января 2017, 08:17

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

Same_name.RTF
Same_name.RTF.p7s

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

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

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

String[] dirList = curentFolder.list((File dir, String name) -> return dir.isDirectory());
Answer 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  <code>true</code> if and only if the name should be
  * included in the file list; <code>false</code> otherwise.
  */
  boolean accept(File dir, String name);
}

т.е. dir это текущая директория, в которой были найдены файлы, естественно ваш фильтр всегда будет возвращать true

А вот пример кода, который должен делать то, что вы хотите

List<String> directories =
            Files
                    .list(Paths.get("current_directory"))
                    .filter(Files::isDirectory)
                    .map(Path::toString)
                    .collect(Collectors.toList());
System.out.println(directories);
READ ALSO
Шаблоны-проектирования [требует правки]

Шаблоны-проектирования [требует правки]

Недавно прочел книгу шаблоны проектирования,написанную Марком ГрантомТам были освещены основные паттерны проектирования, но у меня появилось...

296
Как проверять сеть во время стрима

Как проверять сеть во время стрима

У меня возник вопрос относящееся к видео стримуНапример видео воспроизводится онлайн, во время воспроизведения нужно ли проверять соединение...

300
Почему возникает исключение IndexOutOfBoundsException в AbstractListModel

Почему возникает исключение IndexOutOfBoundsException в AbstractListModel

Исключение выходит если запускаю в потоке, а без потока не появляется вроде быКак подправить чтоб без бага было

444
Спортивное программирование

Спортивное программирование

Прошу посоветовать книги по олимпиадному (школьному) программированию и вообще, что стоит учить, на данный момент читаю книгу Роберта Седжевика...

287