【Java】listやlistFilesを使ってディレクトリ内のファイル一覧を取得する!

ディレクトリを作成するにはFileクラスのlistメソッドFileクラスのlistFilesメソッドを使用します。

Fileクラスのlistメソッドは、指定したフォルダの中に存在しているフォルダを一覧として取得するメソッドであり、FileクラスのlistFilesメソッドは、指定したフォルダの中に存在しているファイルやフォルダを一覧として取得できるメソッドです。

そのため、指定したパスの中身を調べたい時などにlistメソッドやlistFilesメソッドを使用します。

今回はFileクラスのlistメソッドとlistFilesメソッドを使って以下の場合でディレクトリ内のファイル一覧を取得します。

⚫︎ listでディレクトリ内のファイル一覧を取得する場合
⚫︎ listFilesでディレクトリ内のファイル一覧を取得する場合
⚫︎ 指定したディレクトリ内にファイルがない場合

また、Java7から使用できるようになったFilesクラスのnewDirectoryStreamメソッドを使って、ディレクトリ内のファイル一覧を取得する方法についても紹介していきます。

listメソッドとは

Fileクラスのlistメソッドとは、ディレクトリを作成するメソッドになります。

listメソッドの書き方

Fileクラスのlistメソッドの構文は下記となります。

まず、listメソッドが使用できるようにFileクラスをインポートします。

そして、Fileの後にlistを呼び出すことでlistの前に指定したFileのファイル名を取得します。

また、返り値はString配列となります。

listFilesメソッドとは

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

listFilesメソッドの書き方

FileクラスのlistFilesメソッドの構文は下記となります。

まず、listFilesメソッドが使用できるようにFileクラスをインポートします。

そして、Fileの後にlistFilesを呼び出すことで指定したFileのフォルダの中に存在しているファイルやフォルダの一覧を取得できます。

また、返り値はFileクラスの配列となります。

ディレクトリ内のファイル一覧を取得するサンプルコード

ディレクトリ内のファイル一覧を取得するサンプルコードを紹介します。

また、サンプルコードを実行するディレクトリ構成は下記のようになります。

C:¥work
|ーーfileA.txt
|ーーfileB.txt
|ーーfileC.txt
|ーーfileD.txt
|ーーfileE
          |ーーfileE1.txt
          |ーーfileE2.txt

listでディレクトリ内のファイル一覧を取得する場合

Main.java

出力結果

File.listメソッドにてファイル一覧を取得
fileA.txt
fileB.txt
fileC.txt
fileD.txt
fileE

listメソッドによってディレクトリ内のファイルの一覧を取得しています。

listFilesでディレクトリ内のファイル一覧を取得する場合

Main.java

出力結果

File.listFilesメソッドにてファイル一覧を取得
c:\work\fileA.txt
c:\work\fileB.txt
c:\work\fileC.txt
c:\work\fileD.txt
c:\work\fileE

listFilesメソッドによって、ディレクトリ内のフォルダやファイル一の覧を取得しています。

指定したディレクトリ内にファイルがない場合

Main.java

出力結果

Exception in thread “main” java.lang.NullPointerException

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

今回は、戻り値であるファイルクラスの配列を参照している為、NullPointerExceptionの例外が発生しています。

NIO.2(Filesクラス)でディレクトリ内のファイル一覧を取得する場合

NIO.2とはJava7で導入された「java.nio.file」パッケージとそのサブパッケージとを合わせたものであり、NIO.2のFilesクラスを使用することでとても簡単にファイル処理を行うことができます。

FilesクラスのnewDirectoryStreamメソッドを呼び出すと、「DirectoryStream」インスタンスを戻します。

「DirectoryStream」インタフェースは「Iterable」インタフェースを継承しているため、「拡張for」文を使ってそこに含まれるすべての「Path」インスタンスを走査することができます。

それによって、ディレクトリ内のファイル一覧を取得することができます。

また、対象のディレクトリ内にファイルまたは、ディレクトリが存在しない場合は、例外が発生します。

Main2.java

出力結果

fileA.txt
fileB.txt
fileC.txt
fileD.txt
fileE

Main.javaで同じディレクトリ構成でMain2.javaを実行すると出力結果の内容が表示されます。

今回のポイント

listやlistFilesでディレクトリ内のファイル一覧を取得

ディレクトリを作成するにはFileクラスのlistとメソッドをFileクラスのlistFilesとメソッド使用する。

⚫︎ FileクラスのlistメソッドFileクラスのlistFilesメソッドでディレクトリ内のファイル一覧を取得することができる

⚫︎ listメソッドはString配列、listFilesメソッドはFile配列を返す

⚫︎ ファイル一覧を取得するディレクトリ内にファイル、または、ディレクトリが存在しない場合は、「null」を戻します。

newDirectoryStreamメソッドでディレクトリ内のファイル一覧を取得

Filesクラスでディレクトリを作成するにはnewDirectoryStreamメソッド使用する。

⚫︎ FilesクラスのnewDirectoryStreamメソッドでディレクトリ内のファイル一覧を取得する、

⚫︎ 対象のディレクトリ内にファイルまたは、ディレクトリが存在しない場合は、例外が発生する

関連記事

for文についてはこちらをご参考ください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し