2016年11月15日火曜日

ファイルツリーの走査

みなさん。 お久しぶりです。

今日はファイルツリーの走査について見てみましょう。

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 件のコメント:

コメントを投稿