Java FileNotFoundException

WBOY
WBOYオリジナル
2024-08-30 16:14:521145ブラウズ

Java FileNotFoundException は、Java でファイル API を操作するときによく発生する例外の一種で、クラス FileInputStream、FileOutputStream、および RandomAccessFile のコンストラクターで読み取りまたは書き込み目的でファイルに指定されたパスが存在しないか、アクセスできない場合に発生します。既存のロックまたはその他の技術的な問題が原因です。これはチェック例外であり、JDK 1.0 で導入された IOException の直接のサブクラスです。また、呼び出すことができる 2 種類のコンストラクターが含まれており、1 つは表示する null メッセージを含む例外を返し、もう 1 つは例外が発生した場合に指定されたメッセージを出力します。

広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文:

public class FileNotFoundExceptionextends IOException
  • public: キーワード public は、指定されたクラスがプロジェクト内のどのクラスからもアクセス可能であり、例外をスローするには継承する必要があることを示します。

このクラスは IOException の直接のサブクラスであるため、クラスのすべてのメソッドと変数を継承します。

Java では FileNotFoundException はどのように動作しますか?

FileNotFoundException は、アクセスするために指定されたファイル パスが存在しないかアクセスできない場合に発生するチェック例外です。チェック例外とは、Java コンパイラがコンパイル時にこの例外が処理されたかどうかをチェックすることを意味します。そうしないと、コンパイル時エラーが発生します。 try-catch ブロックを使用して処理された場合、またはコンパイラ時の定義で throws キーワードを使用して例外が処理された場合に、実行時に例外がどのようにスローされるかを見てみましょう。

例:

File fileObj = new File("C:/JavaPractice.txt")

上記のようにファイルのパスを使用して File クラス オブジェクトをインスタンス化し、そのファイルが存在しないとします。その場合、コンパイラがファイルの読み取りまたは書き込みを試みてそのような状況を検出すると、例外をスローし、FileNotFoundException クラスのインスタンスを作成します。どのコンストラクターを呼び出す必要があるかが指定されていない場合は、エラー メッセージのないコンストラクターがスローされます。

したがって、アプリケーションは以下のエラーで失敗します:

Java FileNotFoundException

Java FileNotFoundException のコンストラクター

FileNotFoundException は IOException のサブクラスで、ファイル パスで指定されたファイルが存在するかどうか、さらにはアクセス可能かどうかをトレースするのに非常に役立ちます。したがって、これを使用するにはインスタンスを作成する必要があります。これはパブリック クラスです。プロジェクト内のどこからでもインスタンス化できます。そして、クラスのインスタンス作成には2種類のコンストラクタがあります。

以下に 2 種類のコンストラクターを示します。

1.エラーメッセージのないコンストラクター

このタイプのコンストラクターは、エラー詳細メッセージとして null を返す FileNotFoundException クラスのインスタンスを作成するために使用されます。

構文:

public FileNotFoundException()

例:

FileNotFoundExceptionexcepObj = new FileNotFoundException()

2.エラーメッセージのあるコンストラクター

このタイプのコンストラクターは、指定された文字列をエラー詳細メッセージとして返す FileNotFoundException クラスのインスタンスを作成するために使用されます。

構文:

public FileNotFoundException(String s)

例:

FileNotFoundExceptionexcepObj = new FileNotFoundException("This is a FileNotFoundException")

これは FileNotFoundException クラスのスーパークラスの 1 つであるため、指定されたエラー メッセージは Throwable.getMessage() メソッドを使用して簡単に取得できます。

Java FileNotFoundException の例

言及されている例を以下に示します:

例 #1

ここでは、1 つのファイルにアクセスできない場合に JVM によって例外がスローされる様子を示します。この場合、出力に表示されるエラー メッセージは、JVM によってデフォルトで指定されたものです。

コード:

//package Proc;
import java.io.Console;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class prac1 {
public static void main(String[] args) {
File fileObj = new File("D:/JavaPractice.txt");
FileInputStream fISObj = null;
try{
fISObj = new FileInputStream(fileObj);
while (fISObj.read()!=-1){
System.out.println(fISObj.read());
}
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
}

出力:

Java FileNotFoundException

例 #2

この例では、指定されたパスにファイルが存在しない場合にエラーを表示するために、指定されたエラー メッセージを含むコンストラクターを使用します。 throw キーワードを使用して例外をスローしました。

コード:

//package Proc;
import java.io.Console;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class prac1 {
public static void main(String[] args) throws FileNotFoundException,IOException{
File fileObj = new File("D:/JavaPractice.txt");
if(!fileObj.exists()){
throw new FileNotFoundException("This file doesnot exist in the path specified "+fileObj.toString());
}
else {
System.out.println("Welcome, we got into file "+fileObj.toString());
}
}
}

出力:

Java FileNotFoundException

FileNotFoundException を回避するには?

アプリケーションで FileNotFoundException が発生すると、アプリケーションの効率が低下します。この例外を回避するための最初のステップは、指定されたファイルが指定されたパスに存在するかどうかを確認することですが、それでも、リアルタイム アプリケーションではファイルが見つからない、または他のプロセスが読み取り対象のファイルをロックしているという状況が発生する可能性があります。そこに書き込んでください。

ケース 1: ファイルが見つからない

これを回避するには、java.io.File.exists() メソッドを使用して、読み取ろうとしているファイルが指定されたパスに存在するかどうかを確認します。これを使用して、コードが FileNotFoundException 例外を処理できるかどうかを確認する必要があります。

ケース 2: ファイルにアクセスできない

このようなケースを回避するには、読み取ろうとしているファイルが、書き込み中の他のユーザーによって現在ロックされているかどうかに注意する必要があります。これには、java.io の canRead() メソッドまたは canWrite() メソッドを使用できます。指定されたファイルが読み取りまたは書き込みの目的で使用できるかどうかを示すファイル クラス。

これら 2 つの予防策を使用すると、チェック例外が発生する可能性のあるファイル クラスのインスタンスによるファイルを開こうとする試みを簡単に回避できます。これにより、指定されたパスからファイルにアクセスするプログラムを含むアプリケーションの効率が向上します。

結論

FileNotFoundException は、存在しないファイル、または何らかのロックによりその時点でアクセスできないファイルにアクセスしようとしたときに発生するチェック例外の一種です。これはチェック例外であるため、Java コンパイラはコンパイル時に処理されたことを確認します。ただし、これを回避する必要がある場合は、File クラスに存在するexist()、canRead()、または canWrite() メソッドを使用できます。

以上がJava FileNotFoundExceptionの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。