ファイルやディレクトリが存在するか確認する(Files.exists)

Files クラスで用意されている exists メソッドを使用することで、指定したファイルやディレクトリが存在するか確認することができます。ここでは Java を使ってファイルやディレクトリが存在するか確認する方法について解説します。

(Last modified: )

ファイルやディレクトリが存在するか確認する

ファイルやディレクトリが存在するか確認するには Files クラスで用意されている exists メソッドを使用します。 exists メソッドはクラスメソッドです。書式は次のとおりです。

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

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

戻り値:
ファイルが存在する場合はtrue。ファイルが存在しないか、その存在を判断できない場合はfalse

例外:
SecurityException - デフォルト・プロバイダの場合は、SecurityManager.checkRead(String)が呼び出されてファイルへの読取りアクセスがチェックされます

1 番目の引数に存在を確認するファイルまたはディレクトリを表す Path オブジェクトを指定します。メソッドを実行すると、指定したパスが表すファイルまたはディレクトリが存在する場合は true を返します。

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

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

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

if (Files.exists(p)){
  System.out.println("ファイルまたはディレクトリは存在します");
}else{
  System.out.println("ファイルまたはディレクトリは存在しません");
}

C:\code\java\file ディレクトリの中の report.txt ファイルが存在するかどうか確認します。なお今回はファイルを指定しましたが、ディレクトリを指定した場合はディレクトリが存在するかどうかを確認します。

サンプルコード

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

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

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

    checkFile(p1);
    checkFile(p2);
    checkFile(p3);
  }

  private static void checkFile(Path p){
    System.out.print("名前:"  + p.getFileName() + "は");

    if (Files.exists(p)){
      System.out.println("存在します");
    }else{
      System.out.println("存在しません");
    }
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample8_1.java

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

java JSample8_1

ファイルやディレクトリが存在するか確認する(1)

ファイルまたはディレクトリが存在するかどうかを確認しました。

ファイルやディレクトリが存在しないか確認する

先ほどの exists メソッドと逆にファイルやディレクトリが存在しないか確認するには Files クラスで用意されている notExists メソッドを使用します。 notExists メソッドはクラスメソッドです。書式は次のとおりです。

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

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

戻り値:
ファイルが存在しない場合はtrue。ファイルが存在するか、その存在を判断できない場合はfalse

例外:
SecurityException - デフォルト・プロバイダの場合は、SecurityManager.checkRead(String)が呼び出されてファイルへの読取りアクセスがチェックされます

1 番目の引数に存在を確認するファイルまたはディレクトリを表す Path オブジェクトを指定します。メソッドを実行すると、指定したパスが表すファイルまたはディレクトリが存在しない場合は true を返します。

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

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

if (Files.notExists(p)){
  System.out.println("ファイルまたはディレクトリは存在しません");
}else{
  System.out.println("ファイルまたはディレクトリは存在します");
}

C:\code\java\file ディレクトリの中の report.txt ファイルが存在しないかどうか確認します。

Files.exists メソッドとちょうど逆の結果になるだけなので、先ほどのサンプルうは exists メソッドを使って次のように記述した場合と同じです。

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

if (!Files.exists(p)){
  System.out.println("ファイルまたはディレクトリは存在しません");
}else{
  System.out.println("ファイルまたはディレクトリは存在します");
}

一応こんなメソッドもあるということだけ覚えておかれてください。

-- --

Java を使ってファイルやディレクトリが存在するか確認する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。