Можно ли указать Java FileVisitor пропускать файлы и возвращать только пути к папкам?

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

Вот типичная реализация класса FileVisitor

      import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;

class myFileVisitor implements FileVisitor<Path> {

    @Override
    public FileVisitResult preVisitDirectory(
            Path dir, BasicFileAttributes attrs) {
        return null;
    }

    @Override
    public FileVisitResult visitFile(
            Path file, BasicFileAttributes attrs) {
        return null;
    }

    @Override
    public FileVisitResult visitFileFailed(
            Path file, IOException exc) {
        return null;
    }

    @Override
    public FileVisitResult postVisitDirectory(
            Path dir, IOException exc) {
        return null;
    }
}

Как мне реализовать инструкцию для этого класса, чтобы просто возвращать путь к каждой папке, которую он просматривает, а не файлы вообще, сохраняя при этом возможность игнорировать любые ошибки, которые могут возникнуть из-за недоступных папок или ошибок прав доступа и т. Д.?

Пример вывода, который я ищу, в конечном итоге будет списком, который был бы таким, только каждый элемент в списке - это путь к папке, а не файл (и я понимаю, что в этом примере у меня есть завершающие косые черты, но это только для того, чтобы указать, что это папка, которую я желаю):

      /Users/
/Users/user/
/Users/user/Documents/
/Users/user/Documents/Finance/
/Users/user/Documents/Finance/CompanyA/
/Users/user/Documents/Finance/CompanyB/
/Users/user/Documents/Finance/CompanyC/
/Users/user/Documents/HumanResources/
/Users/user/Documents/HumanResources/A-G/
/Users/user/Documents/HumanResources/H-O/
/Users/user/Documents/HumanResources/P-U/
/Users/user/Documents/HumanResources/V-Z/
/Users/user/Downloads/
/Users/user/Downloads/CadFiles/

Возможно ли это с классом FileVisitor?

0 ответов

Другие вопросы по тегам