Blog der Heimetli Software AG

Directory traversal mit walk und Stream

Meine Sammlung von Programmen zur Traversierung eines Directories mit Java wird immer länger: Rekursive Traversierung, Level-Order Traversierung. und Traversierung mit walkFileTree.

Mit Java 8 wurden die Streams eingeführt und dazu auch eine Traversierung die einen Stream zurückgibt. Das musste ich natürlich sofort ausprobieren!

Im folgenden Programm wird nicht nur ein Stream sondern auch eine Lambda-Funktion eingesetzt, um wirklich aktuelles Java zu zeigen.

/******************************************************************************/
/*                                                                            */
/*                                                            FILE: Walk.java */
/*                                                                            */
/*  Directory traversal using walk (requires Java 8)                          */
/*  ================================================                          */
/*                                                                            */
/*  V1.00   28-JAN-2015   Te          https://www.heimetli.ch                 */
/*                                                                            */
/******************************************************************************/

import java.io.* ;
import java.nio.file.* ;
import java.util.stream.* ;

/**
 * This is the main class which starts the directory
 * traversal.
 */
public class Walk
{
   /**
    * main calls walk and prints the Stream to the standard output
    *
    * @param args Ignored
    */
   public static void main( String[] args )
   {
      try( Stream<Path> stream = Files.walk(Paths.get(".")) )
      {
         stream.forEach( System.out::println ) ;
      }
      catch( IOException e )
      {
         e.printStackTrace() ;
      }
   }
}
Walk.java herunterladen