JavaのlistFilesメソッドを使ってディレクトリ、ファイルの一覧を取得する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaのlistFilesメソッドを使ってディレクトリ、ファイルの一覧を取得する方法について解説しています。FileクラスのlistFilesメソッドは指定フォルダ内のファイルやフォルダの一覧を取得するメソッドです。基本の使い方を覚えましょう。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

JavaのlistFilesメソッドを使ってディレクトリ、ファイルの一覧を取得する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

listFilesメソッドを使ってディレクトリ、ファイルの一覧を取得する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

Fileクラスとは

Fileクラスは、ファイルやディレクトリを操作するためのクラスです。

ファイルの読み書きや、ディレクトリ中のファイル一覧の取得などができます。

ファイルクラスを利用するには「java.io.File」パッケージをインポートして使います。

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

listFilesメソッドとは

listFilesメソッドとはFileオブジェクトに指定したフォルダの中に存在しているファイルやフォルダを一覧として取得できるメソッドです。

指定したパスの中身を調べたい時などに利用します。戻り値はFileクラスの配列です。

 

listFilesメソッドの使い方

listFilesメソッドは以下の形式で記述します。

 

File 変数 = new File(調べたいディレクトリのパス);
変数.listFiles();

 

指定したパスにディレクトリが存在しない場合、nullが戻ってきます。それ以外はFileクラスの配列が戻ってきます。

 

ディレクトリ、ファイルの一覧を取得してみよう

では実際に ディレクトリ、ファイルの一覧を取得してみましょう

 

プログラムソースコード

 

import java.io.File;

public class Sample {
  public static void main(String[] args) {
    File file = new File("C:/sample01");
    File[] fileList = file.listFiles();

    if (fileList != null) {
      for (int i = 0; i < fileList.length; i++) {
        System.out.println(fileList[i].getName());
      }
    }

  }
}

今回指定した「C:/sample01」の中身は以下のようになっています。

 

そのうえでソースを実行すると以下の結果を取得できます。

 

実行結果

test01.txt
test02.txt

 

期待通り2つのファイルの名前を取得できました。

 

listFilesメソッドの注意点

listFilesメソッドの注意点としては指定したディレクトリが存在しないなどの場合戻り値としてnullが返ってきます。

もしその後戻り値であるファイルクラスの配列を参照するとNullPointerExceptionの例外が発生します。

事前にnullかどうかの判定を入れることで例外を回避できます。

 

この記事ではJavaのlistFilesメソッドを使ってディレクトリ、ファイルの一覧を取得する方法について解説しました。
listFileメソッドを使うことでディレクトリの中にあるディレクトリやファイルを一覧で取得できるため非常に便利です。

その反面、使い方を間違えると例外が発生する可能性もあるため例外処理なども考えて使いましょう。

 

監修してくれたメンター

メンターSさん

システムエンジニアとしてこれまで行政システムや医療用システムの保守、開発に携わりました。

JavaやPython、PHP、Kotlinなど様々な言語での開発経験があります。

TechAcademyではJavaコース、Pythonコース、AIコースなど7コースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも、JavaやServletの技術を使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

 

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。