ファイルが「存在する」かどうかを確認する必要があるのはなぜですか?
ファイル操作 (読み取り/書き込み/作成/削除/更新など) を扱うとき、多くの初心者は、なぜファイルが存在するかどうかを確認する必要があるのかと疑問に思うかもしれません。これに対する適切な応答は、 NoSuchFileException を回避するために、常にファイルにアクセスするより安全な方法です。したがって、実行時例外を回避するには、ファイルにアクセスする前にファイルが存在するかどうかを確認する必要があります。file.exists() メソッドを使用して確認するにはどうすればよいですか?
Java には、指定されたパス上の関連ファイルをチェックするためのパラメータを必要としない単純なブール メソッドfile.exists()が用意されています。ファイルの存在を確認するときは、3 つのシナリオを考慮してください。- ファイルが見つかりました。
- ファイルが見つかりません。
- (セキュリティ上の理由により) アクセス許可が付与されていない場合、ファイルのステータスは不明です。
例
実装を確認するための簡単なコード例を見てみましょう。
package com.java.exists;
import java.io.File;
public class ExistsMethodInJava {
public static void main(String[] args) {
String filePath = "C:\\Users\\Lubaina\\Documents\\myNewTestFile.txt";
File file = new File(filePath);
// check if the file exists at the file path
System.out.println("Does File exists at \"" + filePath + "\"?\t" + file.exists());
filePath = "C:\\Users\\Lubaina\\Documents\\myOtherTestFile.txt";
File nextFile = new File(filePath);
// check if the file exists at the file path
System.out.println("Does File exists at \"" + filePath + "\"?\t" + nextFile.exists());
}
}
出力
「C:\Users\Lubaina\Documents\myNewTestFile.txt」にファイルは存在しますか? true 「C:\Users\Lubaina\Documents\myOtherTestFile.txt」にファイルは存在しますか? 間違い
file.exists()メソッドは「 directory 」パスに対しても機能すること に注意してください。このメソッドで有効なディレクトリ パスをチェックすると、true が返され、それ以外の場合は false が返されます。より深く理解するには、次のコード ブロックを見てください。
package com.java.exists;
import java.io.File;
public class CheckFileExists {
// check if the "file" resource exists and not "directory"
public static boolean checkFileExists(File file) {
return file.exists() && !file.isDirectory();
}
public static void main(String[] args) {
String directoryPath = "C:\\Users\\Lubaina\\Documents\\javaContent";
File direcotry = new File(directoryPath);
// check if the directory exists at the dir path
if (direcotry.exists()) {
System.out.println("Direcotry at \"" + directoryPath + "\" exists.\n");
} else {
System.out.println("Direcotry at \"" + directoryPath + "\" does not exist.\n");
}
// check if the resource present at the path is a "file" not "directory"
boolean check = checkFileExists(direcotry);
System.out.println("Is the resource \"" + direcotry + "\" a File? " + check);
String filePath = "C:\\Users\\Lubaina\\Documents\\myNewTestFile.txt";
File file = new File(filePath);
check = checkFileExists(file);
System.out.println("Is the resource \"" + file + "\" a File? " + check);
}
}
出力
「C:\Users\Lubaina\Documents\javaContent」のディレクトリが存在します。リソース「C:\Users\Lubaina\Documents\javaContent」はファイルですか? false リソース "C:\Users\Lubaina\Documents\myNewTestFile.txt" はファイルですか? 真実
出力からわかるように、「javaContent」という名前のディレクトリは、exists()メソッドによって検証されています。したがって、ファイルがディレクトリではないことを特に確認したい場合は、Java のFileクラスによって提供されるブール メソッドisDirectory()を使用できます。
結論
この記事を読み終えるまでに、Java にファイルが存在するかどうかを確認する方法を理解しているはずです。独自のプログラムを作成して、この機能をテストして理解することができます。慣れてきたら、ファイルの存在を確認する他の方法 (シンボリック リンクや nio クラスの使用など) も検討できます。頑張ってコーディングを楽しんでください! :)
さらに読む: |
---|
GO TO FULL VERSION