« 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

    TrackBack URL for this entry:
    http://app.cocolog-nifty.com/t/trackback/3959/13860973

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

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