File.listFiles/FileFilterでファイル選別
2009/03/23 18:20Update
File.listFiles()メソッドは該当するファイル(フォルダ)のサブファイルやサブディレクトリを取得することができます。本文は、FileFilterとFilenameFilterを使ったサンプルから、File.listFiles()メソッドの戻り値を選別(フィルタ)する方法について学びます。
java.io.Fileクラスのlist()メソッド:
String[] list()
すべてのサブファイルおよびサブディレクトリを示す文字列の配列を返します。
String[] list(FilenameFilter filter)
指定されたファイル名フィルタの基準を満たすサブファイル及びサブディレクトリの文字列の配列を返します。
File[] listFiles()
すべてのサブファイルおよびサブディレクトリを示すFileオブジェクトの配列を返します。
File[] listFiles(FileFilter filter)
指定されたフィルタの基準を満たすサブファイル及びサブディレクトリのFileオブジェクトの配列を返します。
File[] listFiles(FilenameFilter filter)
指定されたファイル名フィルタの基準を満たすサブファイル及びサブディレクトリのFileオブジェクトの配列を返します。
サンプルからみてみます。
例1:
以下のサンプルは、指定する拡張子(.zip)であるファイルだけを取得します。
例2:
以下のサンプルは、ファイル名が指定する正規表現のパターンにマッチするファイルを取得します。
例3:
以下のサンプルは、フォルダではなくサブファイルを取得します。
java.io.File API仕様
java.io.FileFilter API仕様
java.io.FilenameFilter API仕様
String[] list()
すべてのサブファイルおよびサブディレクトリを示す文字列の配列を返します。
String[] list(FilenameFilter filter)
指定されたファイル名フィルタの基準を満たすサブファイル及びサブディレクトリの文字列の配列を返します。
File[] listFiles()
すべてのサブファイルおよびサブディレクトリを示すFileオブジェクトの配列を返します。
File[] listFiles(FileFilter filter)
指定されたフィルタの基準を満たすサブファイル及びサブディレクトリのFileオブジェクトの配列を返します。
File[] listFiles(FilenameFilter filter)
指定されたファイル名フィルタの基準を満たすサブファイル及びサブディレクトリのFileオブジェクトの配列を返します。
サンプル
サンプルからみてみます。
例1:
以下のサンプルは、指定する拡張子(.zip)であるファイルだけを取得します。
public static FilenameFilter getFileExtensionFilter(String extension) {
final String _extension = extension;
return new FilenameFilter() {
public boolean accept(File file, String name) {
boolean ret = name.endsWith(_extension);
return ret;
}
};
}
File file = new File("c:\\");
//拡張子は.zipのファイルを取得します。
File[] zipFiles = file.listFiles(getFileExtensionFilter(".zip"));
例2:
以下のサンプルは、ファイル名が指定する正規表現のパターンにマッチするファイルを取得します。
public static FilenameFilter getFileRegexFilter(String regex) {
final String regex_ = regex;
return new FilenameFilter() {
public boolean accept(File file, String name) {
boolean ret = name.matches(regex_);
return ret;
}
};
}
File file = new File("c:\\");
//ファイル名は8つの数字で構成され、拡張子は.htmlのファイルを取得します。
File[] numberHtmlFiles = file.listFiles(getFileRegexFilter("[0-9]{8}\\.html"));
例3:
以下のサンプルは、フォルダではなくサブファイルを取得します。
public static FileFilter getNotDirFileFilter() {
return new FileFilter() {
public boolean accept(File file) {
return file.isFile();
}
};
}
File file = new File("c:\\");
File[] notDirFiles = file.listFiles(getNotDirFileFilter());
参考資料
java.io.File API仕様
java.io.FileFilter API仕様
java.io.FilenameFilter API仕様
Sponsored Link
Comments
- Relative Articles
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Javaでpropertiesファイルの読み書き処理(1) - (2009/01/24 16:36)
- URLから画像を取得してファイルに書き込み 例 - (2009/01/22 16:40)
- リソースファイルの国際化対応 - java.util.ResourceBundle - (2009/01/24 22:41)
- Javaで指定するフォルダにあるすべてのファイルをソートするには - (2009/01/24 23:27)
- FileReader/FileWriterでテキストファイルの読み書き - (2009/01/28 17:57)
- Jakarta Commons NETによるFTP処理(FTPClient) - (2009/01/28 19:40)
- DTDファイル処理 - DTDParser - Java DTD パーサー - (2009/01/30 17:48)
- Apache Commons Digesterを使おう - サンプルから学ぶXML文書の読み込み - (2009/02/09 17:09)
- リソースからInputStreamの取得するための汎用的なサンプル - (2009/02/16 17:29)