Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでディレクトリ内のファイルを検索する方法を解説!list()とFilenameFilterの使い方

Javaで特定のディレクトリ内に目的のファイルが存在するかどうかを確認したい場面は、実務でもよくあります。本記事では、Fileクラスを使ってディレクトリ内のファイルを検索する2つの方法を、サンプルコード付きでわかりやすく解説します。

方法1:list()メソッドとequals()で検索する

Fileクラスのlist()メソッドは、そのFileオブジェクトが表すパスに含まれるすべてのファイルおよびディレクトリの名前を、String型の配列として返します。

ファイルを検索するには、この配列の各要素(ファイル名)と、探したいファイル名をequals()メソッドで比較します。

サンプルコード

import java.io.File;
import java.util.Arrays;
import java.util.Scanner;

public class Example {
    public static void main(String[] argv) throws Exception {
        System.out.println("ディレクトリのパスを入力してください:");
        Scanner sc = new Scanner(System.in);
        String pathStr = sc.next();

        System.out.println("検索したいファイル名を入力してください:");
        String file = sc.next();
        System.out.println(file);

        File dir = new File(pathStr);
        String[] list = dir.list();
        System.out.println(Arrays.toString(list));

        boolean flag = false;
        for (int i = 0; i < list.length; i++) {
            if (file.equals(list[i])) {
                flag = true;
            }
        }

        if (flag) {
            System.out.println("ファイルが見つかりました");
        } else {
            System.out.println("ファイルが見つかりませんでした");
        }
    }
}

実行結果

ディレクトリのパスを入力してください:
D:\ExampleDirectory
検索したいファイル名を入力してください:
demo2.pdf
demo2.pdf
[demo1.pdf, demo2.pdf, sample directory1, sample directory2, sample directory3, sample directory4, sample_jpeg1.jpg, sample_jpeg2.jpg, test1.docx, test2.docx]
ファイルが見つかりました

方法2:FilenameFilterインターフェースでフィルタリングして検索する

Fileクラスには、list(FilenameFilter filter)というオーバーロードされたメソッドも用意されています。このメソッドは、指定したフィルタ条件に一致するファイル名だけを含むString配列を返します。

FilenameFilterはJavaのインターフェースで、次の単一のメソッドを持っています。

accept(File dir, String name)

このメソッド内で、目的のファイル名との一致条件を実装することで、効率的にファイルを絞り込んで検索できます。

サンプルコード

import java.io.File;
import java.io.FilenameFilter;

public class Example {
    public static void main(String[] argv) throws Exception {
        File dir = new File("D:\\ExampleDirectory");

        FilenameFilter filter = new FilenameFilter() {
            public boolean accept(File dir, String name) {
                return name.equalsIgnoreCase("demo1.pdf");
            }
        };

        String[] files = dir.list(filter);
        if (files == null) {
            System.out.println("ファイルが見つかりませんでした");
        } else {
            System.out.println("ファイルが見つかりました");
        }
    }
}

実行結果

ファイルが見つかりました

まとめ

  • list()メソッド:ディレクトリ内の全ファイル・フォルダ名を配列で取得し、ループ処理で比較して検索するシンプルな方法です。
  • list(FilenameFilter)メソッド:フィルタ条件を指定できるため、大文字小文字を無視した比較や拡張子による絞り込みなど、柔軟な検索が可能です。

用途に応じてこれらの方法を使い分けることで、Javaでのファイル検索を効率的に実装できます。

  1. Javaでディレクトリ階層を作成する方法|mkdirs()メソッドの使い方を解説

    java.ioパッケージに含まれるFileクラスは、システム上のファイルやディレクトリ(パス名)を表現するためのクラスです。このクラスには、ファイルやディレクトリに対してさまざまな操作を行うためのメソッドが数多く用意されています。 mkdir()メソッドを使用すると、現在のFileオブジェクトが表すパスにディレクトリを1つ作成できます。ただし、このメソッドは親ディレクトリが存在しない場合には失敗するという点に注意が必要です。 ディレクトリ階層を作成するには? 複数階層からなる新しいディレクトリ構造を一括で作成したい場合は、同じFileクラスのmkdirs()メソッドを使用します。このメソッドは

  2. 【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)

    JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず