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

Javaでディレクトリ内のjpgファイル一覧を取得する方法

FilenameFilterインターフェースを使った方法

Fileクラスのlist(FilenameFilter filter)メソッドは、現在のFileオブジェクトが表すパスに存在するすべてのファイルおよびディレクトリの名前をString配列として返します。ただし、返される配列には、指定したフィルター条件を満たすファイル名のみが含まれます。

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

accept(File dir, String name)

拡張子に基づいてファイル名を取得したい場合は、このインターフェースを実装したクラスを作成し、そのインスタンスをFileクラスのlist()メソッドに渡します。

ここでは、Dドライブ直下にExampleDirectoryというフォルダがあり、7つのファイルと2つのディレクトリが含まれているものと仮定します。

コード例

次のJavaプログラムは、D:\ExampleDirectory 内に存在するjpegファイル(.jpg)の名前を出力します。

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class Sample{
    public static void main(String args[]) throws IOException {
        // ディレクトリのFileオブジェクトを作成
        File directoryPath = new File("D:\\ExampleDirectory");
        // jpgファイル用のフィルターを作成
        FilenameFilter jpgFilefilter = new FilenameFilter(){
            public boolean accept(File dir, String name) {
                String lowercaseName = name.toLowerCase();
                if (lowercaseName.endsWith(".jpg")) {
                    return true;
                } else {
                    return false;
                }
            }
        };
        String imageFilesList[] = directoryPath.list(jpgFilefilter);
        System.out.println("指定されたディレクトリ内のjpegファイル一覧:");
        for(String fileName : imageFilesList) {
            System.out.println(fileName);
        }
    }
}

実行結果

指定されたディレクトリ内のjpegファイル一覧:
cassandra_logo.jpg
cat.jpg
coffeescript_logo.jpg
javafx_logo.jpg

Files.walk()とStream APIを使った方法

Java 8以降では、NIOのFiles.walk()メソッドとStream APIを組み合わせることで、より簡潔に記述できます。この方法はサブディレクトリも含めて再帰的にファイルを検索できる点が特徴です。

コード例

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class Example {
    public static void main(String[] args) throws IOException {
        // ディレクトリを再帰的に走査
        Stream<Path> path = Files.walk(Paths.get("D:\\ExampleDirectory"));
        // 拡張子が.jpgのファイルのみを抽出
        path = path.filter(var -> var.toString().endsWith(".jpg"));
        path.forEach(System.out::println);
    }
}

実行結果

指定されたディレクトリ内のjpegファイル一覧:
cassandra_logo.jpg
cat.jpg
coffeescript_logo.jpg
javafx_logo.jpg

まとめ

特定のディレクトリ直下のjpgファイルだけを取得したい場合はFilenameFilterを使う方法が適しており、サブディレクトリも含めて再帰的に検索したい場合はFiles.walk()とStream APIを組み合わせる方法が便利です。用途に応じて使い分けるとよいでしょう。

  1. 【Java入門】ディレクトリ内のすべてのファイルを再帰的に削除するプログラムの書き方

    この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に削除する方法を解説します。サブディレクトリの中にあるファイルも含めて、ファイルだけを削除し、ディレクトリ構造自体は残すプログラムです。前提となるディレクトリ構成まず、Dドライブ直下に ExampleDirectory というフォルダがあり、その中に7つのファイルと2つのディレクトリが含まれているものと仮定します。SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含むSampleDirectory2:SampleFile2.txt と Sample

  2. Javaでディレクトリ内のすべてのファイルを再帰的に一覧表示する方法

    この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に一覧表示するプログラムを解説します。サブディレクトリの中にあるファイルまで含めて取得できるため、フォルダ全体の内容を把握したい場合に便利なテクニックです。 前提となるディレクトリ構成 Dドライブ直下に「ExampleDirectory」というフォルダがあり、その中に7つのファイルと2つのサブディレクトリが格納されていると仮定します。 各サブディレクトリの内容は以下の通りです。 SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含みます。 Sa