Java NIO2 - вернуть рекурсивную коллекцию <Path> - PullRequest
1 голос
/ 06 февраля 2012

Я смотрю на новую функциональность в Java7.Я хочу получить возвращенные объекты Collection с указанным входным каталогом.

В настоящее время я использую (org.apache.commons.io)

Collection<File> files = FileUtils.listFiles(myInputFile, ...);

Вместо этого я хотел бы сделать что-токак:

Collection<Path> paths = listPathsUsingJava7(myInputPath, ...);

Однако я не вижу ничего конкретного в том, что делать в примерах / документах.Я вижу DirectoryStreams, которые, похоже, не выполняют рекурсию.Я также вижу Vistors, которые заставляют вас действовать над текущим объектом, а не добавлять его в коллекцию.

У кого-нибудь есть пример того, как сделать это на Java7?

Спасибо!

1 Ответ

2 голосов
/ 06 февраля 2012

следующий код JDK7 добавит все файлы в папке и подпапках в files.

    final List<Path> files = new ArrayList<>();
    Files.walkFileTree(Paths.get(myInputPath), new SimpleFileVisitor<Path>() {

        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
            files.add(file);
            return FileVisitResult.CONTINUE;
        }
    });
...