ファイルかディレクトリかを判定する(Files.isDirectory)

Files クラスで用意されている isDirectory メソッドを使用すると、対象 Path オブジェクトがファイルを表しているのかディレクトリを表しているのかを判定することができます。ここでは Java を使って対象の Path オブジェクトがファイルかディレクトリかを判定する方法について解説します。

(Last modified: )

ディレクトリかどうかを判定する

Path オブジェクトが表しているものがディレクトリかどうかを判定するには Files クラスで用意されている isDirectory メソッドを使用します。 isDirectory メソッドはクラスメソッドです。書式は次のとおりです。

public static boolean isDirectory(Path path, LinkOption... options)

パラメータ:
path - テストするファイルへのパス
options - シンボリック・リンクの処理方法を示すオプション

戻り値:
ファイルがディレクトリである場合はtrue。ファイルが存在しないか、ディレクトリでないか、またはファイルがディレクトリかどうかを判断できない場合はfalse

例外:
SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、そのcheckReadメソッドがファイルへの読取りアクセスを拒否する場合

1 番目の引数に判定する対象の Path オブジェクトを指定します。 Path オブジェクトがディレクトリの場合には戻り値として true が返されます。ディレクトリではない場合には false が返されますが、ファイルが存在しない場合にも false が返されるので注意してください。

※ Path オブジェクトを使ってファイルやディレクトリを表す方法については「Pathオブジェクトを使ってファイルやディレクトリを表す」を参照されてください。

次のサンプルをみてください。

Path p = Paths.get("C:/code/java/file/report");

if (Files.isDirectory(p)){
  System.out.println("ディレクトリです");
}else{
  System.out.println("ファイルです");
}

C:\code\java\file\report を表す Path オブジェクトがディレクトリかどうかを判定します。ディレクトリでない場合は Path オブジェクトがファイルかまたは存在しないかです。もし必要であれば Files.exists メソッドを使ってファイルが存在するかどうかを確認してください。

※ Files.exists メソッドについては「ファイルやディレクトリが存在するか確認する(Files.exists)」を参照されてください。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample2-1.java という名前で保存します。

import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;

class JSample2_1{
  public static void main(String[] args){
    Path p1 = Paths.get("doc/report");
    Path p2 = Paths.get("doc/manual");
    Path p3 = Paths.get("doc/memo");

    checkDirectory(p1);
    checkDirectory(p2);
    checkDirectory(p3);
  }

  private static void checkDirectory(Path p){
    System.out.print(p.getFileName() + "は");
    if (Files.isDirectory(p)){
      System.out.println("ディレクトリです");
    }else{
      if (Files.exists(p)){
        System.out.println("ファイルです");
      }else{
        System.out.println("存在しません");
      }
    }
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample2_1.java

カレントディレクトリの下にある doc ディレクトリの中には report という名前のファイルと manual という名前のディレクトリが含まれています。

ディレクトリかどうかを判定する(1)

その後で、次のように実行してください。

java JSample2_1

ディレクトリかどうかを判定する(2)

Path オブジェクトが表すファイルがディレクトリなのかどうかを判定し、ディレクトリでなかった場合はファイルが存在するかどうかを判定して結果を表示しています。

-- --

Java を使って対象の Path オブジェクトがファイルかディレクトリかを判定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。