Javaによるディレクトリ内のファイル検索

 Javaでファイルシステムのディレクトリを検索し、 含まれるファイルの一覧を得る、という処理は次のようにすれば可能です。

import java.io.*;

String workdir = "C:/Program Files/ApacheTomcat4.0/webapps/apps/work";
File dir = new File(workdir);
String[] list = dir.list();

 これは指定した名前のディレクトリ内のファイルをStringの配列として (各要素にディレクトリパスはつきません)返す方法です。

 もう少し発展させて、指定のディレクトリから、 ファイル名が決まったパターンに適合するファイルだけを選択し、 それらの名前をStringの配列として返すには、次のようにします。

import java.io.*;
class PDFFilenameFilter implements FilenameFilter {
  public boolean accept(File dir, String name){
    return name.toLowerCase().endsWith(".pdf");
  }
}

String workdir = "C:/Program Files/ApacheTomcat4.0/webapps/apps/work";
File dir = new File(workdir);
String[] list = dir.list(new PDFFilenameFilter());

 上のように、java.io.FilenameFilter インターフェースを実装したクラスを作り、そのインスタンスをlist()メソッドに渡します。 PDFFilenameFilterクラスのaccept()が FilenameFilterで規程されているメソッドで、 これが真を返す場合にそのファイル名がlistに含まれます。

 またファイル「名」のパターンではなく、 ファイルの属性などによって適合するファイルを選別するための、 java.io.FileFilterインターフェースと、 File[] java.io.File.listFiles(FileFilter)メソッドもあります。

ファイルの更新日時を知る
 なお、Javaでファイルの最終更新日時を知るための汎用的な方法はありません。 java.io.File.lastModified() メソッドはファイルの更新日時をlong整数として返しますが、 この数字はプラットフォーム可搬性がなく、 絶対的な日時に置き換えて解釈するように作られていません。 (ふたつのlastModified値を比べて、どちらが新しいかを判断するのには使えます)

Java kowaza Top

(first uploaded 2002/08/16 last updated (not ever), Urano398 - KQ Taura)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル