« Ys 20周年 | Main | Agree2007(withATOK2007) »

2007.02.12

Jakarta Commons IO - WildcardFileFilter

 Jakarta Commons IOなるライブラリの存在を知ったので、試してみました(名前の通り、IO関係のライブラリです)。
 ざっくりと、

  • 基本(共通)、その他?(org.apache.commons.io)
  • フィルタ(org.apache.commons.io.filefilter)
  • 入力(org.apache.commons.io.input)
  • 出力(org.apache.commons.io.output)
    の4つに分類できると思われます。

     いろいろと見ていると・・・とりあえず今まで欲しかったけど作ったことがなかった「ワイルドカードを用いたフィルター」があったので使ってみました(正規表現でフィルタリングを行えるフィルターは作ったことがあるのですが)。
     例えば、

    File root = new File("C:\\Temp");
    FileFilter filter = new WildcardFileFilter("*.tmp");
    File[] files = root.listFiles(filter);
    for(File f : files) {
     System.out.println(f.getName());
    }

    で、C:\Tempフォルダ内で、拡張子がtmpであるファイルの一覧を表示することができます(もちろん、拡張子でのチェックなら、endsWithを使うフィルタを作っても実現できますが)。

     注意しなければならないのは、WildcardFileFilterクラスは、辿っていくとjava.io.FileFilterとjava.io.FilenameFilterの2つのインタフェースを実装しているため、root.listFiles(new WildcardFileFilter("*.tmp"));って書いてしまうと、File#listFiles(FileFilter)かFile#listFiles(FilenameFilter)か判断できずにコンパイルエラーが出てしまいます。

  • |

    « Ys 20周年 | Main | Agree2007(withATOK2007) »

    Java」カテゴリの記事

    プログラム」カテゴリの記事

    Comments

    Post a comment



    (Not displayed with comment.)


    Comments are moderated, and will not appear on this weblog until the author has approved them.



    TrackBack


    Listed below are links to weblogs that reference Jakarta Commons IO - WildcardFileFilter:

    « Ys 20周年 | Main | Agree2007(withATOK2007) »