Recursively list all files within a directory using nio.file.DirectoryStream; Recursively list all files within a directory using nio.file.DirectoryStream; java java

Recursively list all files within a directory using nio.file.DirectoryStream;


Java 8 provides a nice way for that:

Files.walk(path)

This method returns Stream<Path>.


Make a method which will call itself if a next element is directory

void listFiles(Path path) throws IOException {    try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {        for (Path entry : stream) {            if (Files.isDirectory(entry)) {                listFiles(entry);            }            files.add(entry);        }    }}


Check FileVisitor, very neat.

 Path path= Paths.get("C:\\Users\\Danny\\Documents\\workspace\\Test\\bin\\SomeFiles"); final List<Path> files=new ArrayList<>(); try {    Files.walkFileTree(path, new SimpleFileVisitor<Path>(){     @Override     public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {          if(!attrs.isDirectory()){               files.add(file);          }          return FileVisitResult.CONTINUE;      }     }); } catch (IOException e) {      e.printStackTrace(); }