Для тех, кто также интересуется Java 7 и NIO, есть альтернативное решение для ответа @ voo выше . Мы можем использовать try-with-resources , который вызывает Files.find()
, и лямбда-функцию, которая используется для фильтрации каталогов.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
final Path directory = Paths.get("/path/to/folder");
try (Stream<Path> paths = Files.find(directory, Integer.MAX_VALUE, (path, attributes) -> attributes.isDirectory())) {
paths.forEach(System.out::println);
} catch (IOException e) {
...
}
Мы можем даже отфильтровать каталоги по имени, изменив лямбда-функцию:
(path, attributes) -> attributes.isDirectory() && path.toString().contains("test")
или по дате:
final long now = System.currentTimeMillis();
final long yesterday = new Date(now - 24 * 60 * 60 * 1000L).getTime();
// modified in the last 24 hours
(path, attributes) -> attributes.isDirectory() && attributes.lastModifiedTime().toMillis() > yesterday