Java Gold合格への道 ~Java I/O・ファイルツリーのトラバース~
スポンサーリンク
こんにちは。たろすです。
今回はJava I/Oのファイルツリーのトラバースについて説明します。
方法
ファイルのトラバースはwalkFileTreeメソッドやwalkメソッドで行います。
walkFileTree
try { Files.walkFileTree(Paths.get("dir0"), new SimpleFileVisitor<Path>() { public FileVisitResult preVisitDirectory(Path file, BasicFileAttributes attrs) throws IOException { System.out.println(file); return FileVisitResult.CONTINUE; } }); } catch (IOException e) { e.printStackTrace(); }
dir0 dir0\dir1 dir0\dir2 dir0\dir2\dir3 dir0\dir2\dir4 dir0\dir2\dir4\dir5
第一引数は始点となるパスで、第二引数はFileVisitorインタフェースです。
SimpleFileVisitorクラスはFileVisitorクラスの簡易実装として四つのメソッドの実装を提供しています。
今回はディレクトリ内のエントリをたどる前に呼び出されるpreVisitDirectoryのみオーバーライドしました。
その他に以下のメソッドがあります。
postVisitDirectory:ディレクトリ内のエントリおよびそれらのサブディレクトリをたどった後に呼び出される。
visitFile:ディレクトリ内のファイルをたどった際に呼び出される。
visitFileFailed:たどれなかったファイルに対して呼び出される。
walk
try { Files.walk(Paths.get("dir0")).forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); }
dir0 dir0\dir1 dir0\dir2 dir0\dir2\dir3 dir0\dir2\dir4 dir0\dir2\dir4\dir5
walkメソッドも第一引数は始点となるパスです。
戻り値はStream<Path>オブジェクトです。