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

Javaのlist()メソッドとlistFiles()メソッドの違いをわかりやすく解説

java.ioパッケージに含まれるFileクラスは、システム上のファイルやディレクトリ(パス名)を抽象的に表現するためのクラスです。特定のディレクトリ内に存在するすべてのファイルやフォルダの一覧を取得したい場合、このクラスが提供するlist()メソッドとlistFiles()メソッドを利用できます。

両者の主な違いは次のとおりです。

  • list()メソッド:指定したディレクトリ内の全ファイル・ディレクトリの「名前」を、String型の配列として返します。

  • listFiles()メソッド:指定したディレクトリ内の全ファイル・ディレクトリを表すFileオブジェクトを、File型の配列として返します。

つまり、ディレクトリ内のファイル名だけが必要な場合はlist()メソッドで十分ですが、ファイル名や絶対パスなどの詳細情報が必要な場合は、listFiles()メソッドでFileオブジェクトを取得し、getName()やgetAbsolutePath()などの各種メソッドを呼び出して必要な情報を取り出すことになります。

両メソッドの比較一覧

項目list()listFiles()
戻り値の型String[]File[]
取得できる内容ファイル名・ディレクトリ名のみFileオブジェクト(名前・パス・サイズなど全情報にアクセス可能)
向いている用途名称の一覧表示など簡易的な処理ファイルの属性や詳細情報を扱う処理

list()メソッドの使用例

import java.io.File;
import java.io.IOException;

public class ListOfFiles {
    public static void main(String args[]) throws IOException {
        // ディレクトリを表すFileオブジェクトを作成
        File path = new File("D:\\ExampleDirectory");
        // ファイルとディレクトリの一覧を取得
        String contents[] = path.list();
        System.out.println("指定されたディレクトリ内のファイル・ディレクトリ一覧:");
        for(int i = 0; i < contents.length; i++) {
            System.out.println(contents[i]);
        }
    }
}

実行結果

指定されたディレクトリ内のファイル・ディレクトリ一覧:
SampleDirectory1
SampleDirectory2
SampleFile1.txt
SampleFile2.txt
SapmleFile3.txt

このように、list()メソッドを使えば、ファイル名やディレクトリ名だけを文字列として手軽に取得できます。

listFiles()メソッドの使用例

import java.io.File;
import java.io.IOException;

public class ListOfFiles {
    public static void main(String args[]) throws IOException {
        // ディレクトリを表すFileオブジェクトを作成
        File path = new File("D:\\ExampleDirectory");
        // 一覧をFileオブジェクトとして取得
        File files[] = path.listFiles();
        System.out.println("指定されたディレクトリ内のファイル・ディレクトリ一覧:");
        for(File file : files) {
            System.out.println("ファイル名:" + file.getName());
            System.out.println("ファイルパス:" + file.getAbsolutePath());
            System.out.println(" ");
        }
    }
}

実行結果

指定されたディレクトリ内のファイル・ディレクトリ一覧:
ファイル名:SampleDirectory1
ファイルパス:D:\ExampleDirectory\SampleDirectory1

ファイル名:SampleDirectory2
ファイルパス:D:\ExampleDirectory\SampleDirectory2

ファイル名:SampleFile1.txt
ファイルパス:D:\ExampleDirectory\SampleFile1.txt

ファイル名:SampleFile2.txt
ファイルパス:D:\ExampleDirectory\SampleFile2.txt

ファイル名:SapmleFile3.txt
ファイルパス:D:\ExampleDirectory\SapmleFile3.txt

listFiles()メソッドはFileオブジェクトを返すため、上記のようにgetName()でファイル名を、getAbsolutePath()で絶対パスを取得するなど、各ファイルに対して柔軟に操作や情報取得を行えます。

まとめ

list()とlistFiles()はどちらもディレクトリ内の一覧を取得するメソッドですが、list()は名前だけを持つString配列を、listFiles()は詳細情報を持つFileオブジェクトの配列を返す点が最大の違いです。単純に名前一覧が必要ならlist()、ファイルの属性や詳細を扱いたいならlistFiles()と、目的に応じて使い分けるとよいでしょう。

  1. JREとJDKの違いは何?Java開発初心者向けにわかりやすく解説

    Javaを学び始めると、必ず耳にするのが「JDK」と「JRE」という2つの用語です。名前が似ているため混同されやすいのですが、それぞれ役割や含まれる機能が異なります。この記事では、両者の違いを初心者にもわかりやすく解説します。 JDK(Java Development Kit)とは JDKは「Java Development Kit」の略で、Javaアプリケーションの開発と実行に必要なすべてのツールおよびライブラリをまとめたソフトウェアパッケージです。 JDKには以下のようなものが含まれています。 コンパイラ(javac):ソースコード(.javaファイル)をバイトコード(.classファイ

  2. JavaとJavaScriptの違いとは?歴史・技術・使い分けを徹底解説

    ウェブ開発者のジェレミー・キースは2009年、「JavaとJavaScriptの関係は、ハムとハムスターの関係のようなものだ」と語りました。この比喩がどれほど正確かは議論の余地がありますが、その本質は的確です。共通する言語的ルーツを持つにもかかわらず、JavaとJavaScriptはまったく異なる2つのプログラミング言語なのです。年月とともに両者の重なりも多少増えましたが、今なおJavaScriptはウェブサイトにインタラクティブ性をもたらすフロントエンド言語の主流であり続け、Javaはサーバーサイドやアプリケーション開発で人気を保っています。開発者を採用したい方、プログラミングを学びたい方