WindowsのDIRコマンドやLinuxのlsコマンドのように、指定したディレクトリ(フォルダ)にあるディレクトリ、ファイルを知りたい場合があります。
 今回は、Javaでディレクトリの一覧を取得します。
ディレクトリ(フォルダ)のファイル・サブディレクトリを取得するサンプル
指定したディレクトリ(c:\test\work)の直下にある、ディレクトリやファイルのリストを取得します。
 (全てのディレクトリ・ファイルのリストと、ディレクトリ名またはファイル名に「a」を含むリストを取得)
 また、取得した結果を標準出力します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.io.File; import java.io.FilenameFilter; public class FileListTest {     public static void main(String[] args) {         //パスを指定         String path = "c:\\test\\work";         File file = new File(path);         //リスト1.パス直下のすべてを取得         String[] allArray = file.list();         System.out.println("--- リスト1 ---");         for(String s : allArray) {             System.out.println(s);         }         //リスト2.パス直下の「a」を含むリストを取得         String[] aArray = file.list(new FilenameFilter() {             @Override             public boolean accept(File dir, String name) {                 if(name.indexOf("a") != -1) {                     return true;                 }                 return false;             }         });         System.out.println("--- リスト2 ---");         for(String s : aArray) {             System.out.println(s);         }     } } | 
実行結果
取得されたファイル名・ディレクトリ名の一覧が標準出力されます。
 リスト1:指定したディレクトリにある、ディレクトリおよびファイルの一覧
 リスト2:指定したディレクトリにある、ディレクトリ名またはファイル名に「a」を含む一覧
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | --- リスト1 --- a.bmp a.docx a.txt b.bmp b.docx b.txt dir_a dir_b --- リスト2 --- a.bmp a.docx a.txt dir_a | 
サンプルの解説
File#list()を使うことで、指定したディレクトリの一覧を取得することができます。
 また、ディレクトリ名、ファイル名に特定の文字を含む一覧を抽出するためには、FilenameFilterインタフェースを渡すことによって、取得することができます。
 FilenameFilterは、シンプルな構造で、FilenameFilter#accept(File,String)を実装するだけです♪
 このメソッドの返値がtrueのものが抽出対象になります。












