今日はファイルツリーの走査について見てみましょう。
Filesクラスのcopyメソッドを使用してディレクトリのコピーを行う場合、
ディレクトリに存在するファイルなどはコピーされません。
ディレクトリのすべてのファイル/ディレクトリのコピーを行うにはディレクトリの構造をたどり、
ファイルツリーの末端までファイルをコピーしていく必要があります。
しかし、いままでのFileクラスではファイルツリーをたどることはできるものの、
煩雑になりがちでした。
そこで、NIO2ではデザインパターンのVisitorパターンを利用して、
ファイルツリーを走査する機能が提供されました。
ここでは、Visitorパターンについての詳細については述べませんが、簡単に動作を説明しましょう。
Visitorは、指定されたディレクトリからファイルツリーをだどっていきます。
ファイルツリーのディレクトリ/ファイルに到達するとVisitorのコールバックメソッドがコールされます。
Visitorはファイルツリーの末端までたどっていくことで、ファイルツリーの存在するすべての
ディレクトリやファイルを走査することができます。
NIO2でVisitorとして使用されるのが、java.nio.file.FileVisitorインターフェースです。
FileVisitorインターフェースには以下の4種類のメソッドが定義されています。
- previsitDirectoryメソッド
- postVisitDirectoryメソッド
- visitFileメソッド
- visitFIleFailedメソッド
preVisitDirectoryメソッドはディレクトリに入ったときにコールされるメソッドです。
preVisitDirectoryメソッドがコールされた後、そのディレクトリに存在するファイルがあると
visitFileメソッドがコールされます。
そして、ディレクトリから抜けるとき、postVisitDirectoryメソッドがコールされます。
また、ファイルツリーの走査に失敗すると、visitFileFailedメソッドがコールされます。
文章では解りづらいので、次回はこれらの実装について見ていきます。
それでは今日はこの辺で!
人気ブログランキングへ
0 件のコメント:
コメントを投稿