【Java】指定したパスがディレクトリかファイルかを調べる!(isDirectory/isFile)
指定したパスがディレクトリかファイルかを調べるにはFileクラスのisFileメソッドとFileクラスのisDirectoryメソッドを使用します。
FileクラスのisFileメソッドは、指定したパスがファイルであるかどうかを判定するメソッドであり、FileクラスのisDirectoryメソッドは、指定したパスがディレクトリであるかどうかを判定するメソッドです。
そのため、指定したパスがディレクトリなのかファイルなのかを確認したい場合にisFileメソッドやisDirectoryメソッドを使用します。
今回はFileクラスのisFileメソッドとisDirectoryメソッドを使って以下の場合で指定したパスがディレクトリかファイルかを調べます。
⚫︎ 指定したパスがディレクトリかどうか調べる場合
⚫︎ 指定したパスがファイルかどうか調べる場合
⚫︎ 指定したパスにディレクトリやファイルが存在しない場合
また、Java7から使用できるようになったFilesクラスのisDirectoryメソッドやisRegularFileメソッドを使って、指定したパスがディレクトリかファイルかを調べていきます。
目次
isFileメソッドとは
FileクラスのisFileメソッドとは、指定したパスがファイルであるかどうかを判定するになります。
isFileメソッドの書き方
FileクラスのisFileメソッドの構文は下記となります。
1 2 3 |
import java.io.File; File.isFile(); |
まず、isFileメソッドが使用できるようにFileクラスをインポートします。
そして、Fileの後にisFileメソッドを呼び出すことでisFileの前に指定したFileのパスがファイルであるかどうかを判定します。
また、返り値として、指定したFileのパスがファイルである場合はtrueを返し、ファイルでない場合はfalseを返します。
isDirectoryメソッドとは
FileクラスのisDirectoryメソッドとは、指定したパスがディレクトリであるかどうかを判定するメソッドになります。
isDirectoryメソッドの書き方
FileクラスのisDirectoryメソッドの構文は下記となります。
1 2 3 |
import java.io.File; File.isDirectory(); |
まず、isDirectoryメソッドが使用できるようにFileクラスをインポートします。
そして、Fileの後にisDirectoryメソッドを呼び出すことでisDirectoryの前に指定したFileのパスがディレクトリであるかどうかを判定します。
また、返り値として、指定したFileのパスがディレクトリである場合はtrueを返し、ディレクトリでない場合はfalseを返します。
指定したパスがファイルかディレクトリかを調べるサンプルコード
指定したパスがファイルかディレクトリかを調べるサンプルコードを紹介します。
指定したパスがディレクトリかどうか調べる場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 指定したパスがディレクトリかファイルかを調べる import java.io.File; public class Main { public static void main(String[] args) throws Exception { // 調べるディレクトリ・ファイル File file1 = new File("c:/work"); File file2 = new File("c:/work/targetFile.txt"); // 指定したパスがディレクトリか調べる System.out.println( file1 + "はディレクトリである:" + file1.isDirectory()); System.out.println( file2 + "はディレクトリである:" + file2.isDirectory()); } } |
出力結果
c:/workはディレクトリである:true
c:/work/targetFile.txtはディレクトリである:false
isDirectoryメソッドによって指定したパスがディレクトリであるかを判定しています。
指定したパスがファイルかどうか調べる場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 指定したパスがディレクトリかファイルかを調べる import java.io.File; public class Main { public static void main(String[] args) throws Exception { // 調べるディレクトリ・ファイル File file1 = new File("c:/work"); File file2 = new File("c:/work/targetFile.txt"); // 指定したパスがファイルか調べる System.out.println( file1 + "はファイルである:" + file1.isFile()); System.out.println( file2 + "はファイルである:" + file2.isFile()); } } |
出力結果
c:/workはファイルである:false
c:/work/targetFile.txtはファイルである:true
isFileメソッドによって、指定したパスがファイルであるかを判定しています。
指定したパスにディレクトリやファイルが存在しない場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// 指定したパスがディレクトリかファイルかを調べる import java.io.File; public class Main { public static void main(String[] args) throws Exception { // 調べるディレクトリ・ファイル File file1 = new File("c:/work"); File file2 = new File("c:/work/targetFile.txt"); // 指定したパスがディレクトリか調べる System.out.println( file1 + "はディレクトリである:" + file1.isDirectory()); System.out.println( file2 + "はディレクトリである:" + file2.isDirectory()); // 指定したパスがファイルか調べる System.out.println( file1 + "はファイルである:" + file1.isFile()); System.out.println( file2 + "はファイルである:" + file2.isFile()); } } |
出力結果
c:/workはディレクトリである:false
c:/work/targetFile.txtはディレクトリである:false
c:/workはファイルである:false
c:/work/targetFile.txtはファイルである:false
ディレクトリ、または、ファイルが存在しない場合は、isDirectoryメソッドとisFileメソッドは「false」を返します。
NIO.2(Filesクラス)で指定したパスがファイルかディレクトリかを調べる場合
NIO.2とはJava7で導入された「java.nio.file」パッケージとそのサブパッケージとを合わせたものであり、NIO.2を使用することでとても簡単にファイル処理を行うことができます。
FilesクラスのisDirectoryメソッドはFileクラスのisDirectoryメソッド、FilesクラスのisRegularFileメソッドはFileクラスのisFileメソッドに対応します。
これらを使用することで、Fileクラスのメソッドと同様に判定することができます。
「C:¥work」以下に「targetFile.txt」を用意し、Main2.javaを実行します。
Main2.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
//Java7で指定したパスがディレクトリかファイルかを調べる import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) throws Exception { // 調べるディレクトリ・ファイル Path path1 = Paths.get("c:/work"); Path path2 = Paths.get("c:/work/targetFile.txt"); // 指定したパスがディレクトリか調べる System.out.println( path1 + "はディレクトリである:" + Files.isDirectory(path1)); System.out.println( path2 + "はディレクトリである:" + Files.isDirectory(path2)); // 指定したパスがファイルか調べる System.out.println( path1 + "はファイルである:" + Files.isRegularFile(path1)); System.out.println( path2 + "はファイルである:" + Files.isRegularFile(path2)); } } |
出力結果
c:/workはディレクトリである:true
c:/work/targetFile.txtはディレクトリである:false
c:/workはファイルである:false
c:/work/targetFile.txtはファイルである:true
isDirectoryメソッドによってpath1はtrueを返し、path2はfalseを返しています。
また、isRegularFileメソッドによってpath1はfalseを返し、path2はtrueを返しています。
今回のポイント
isDirectoryやisFileで指定したパスがファイルかディレクトリか調べる
指定したパスがディレクトリかファイルかを調べるにはFileクラスのisDirectoryメソッドとFileクラスのisFileメソッドを使用する。
⚫︎ FileクラスのisDirectoryメソッドで「File」のパスがディレクトリかどうかを判定することができる
⚫︎ FileクラスのisDirectoryメソッドで「File」のパスが普通のファイルかどうかを判定することができる
⚫︎ どちらのメソッドもディレクトリ、または、ファイルが存在しない場合は、falseを戻す
⚫︎ Filesクラスで指定したパスがファイルかディレクトリか調べるにはisDirectoryメソッドやisRegularFileメソッドを使用する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。