Heim  >  Artikel  >  Java  >  Java FileNotFoundException

Java FileNotFoundException

WBOY
WBOYOriginal
2024-08-30 16:14:521108Durchsuche

Java FileNotFoundException ist ein Ausnahmetyp, der häufig bei der Arbeit mit Datei-APIs in Java auftritt, wenn der für eine Datei zum Lesen oder Schreiben im Konstruktor der Klassen FileInputStream, FileOutputStream und RandomAccessFile angegebene Pfad entweder nicht existiert oder nicht zugänglich ist aufgrund einer bestehenden Sperre oder anderer technischer Probleme. Dies ist eine geprüfte Ausnahme, eine direkte Unterklasse von IOException, die mit JDK 1.0 eingeführt wurde. Außerdem enthält es zwei Arten von Konstruktoren, die aufgerufen werden können, wobei einer eine Ausnahme mit einer anzuzeigenden Nullmeldung zurückgibt, während der andere die angegebene Meldung ausgibt, falls die Ausnahme auftritt.

WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Syntax:

public class FileNotFoundExceptionextends IOException
  • public: Das Schlüsselwort public bezieht sich darauf, dass die angegebene Klasse von jeder Klasse im Projekt aus zugänglich ist und geerbt werden muss, um eine Ausnahme auszulösen.

Diese Klasse ist eine direkte Unterklasse von IOException und erbt somit alle Methoden und Variablen der Klasse.

Wie funktioniert FileNotFoundException in Java?

FileNotFoundException ist eine geprüfte Ausnahme, die auftritt, wenn ein für den Zugriff angegebener Dateipfad nicht existiert oder nicht zugänglich ist. Bei der geprüften Ausnahme bedeutet dies, dass der Java-Compiler zur Kompilierungszeit prüft, ob diese Ausnahme behandelt wurde oder nicht; Andernfalls tritt ein Fehler bei der Kompilierung auf. Sehen wir uns an, wie die Ausnahme zur Laufzeit ausgelöst wird, falls sie mithilfe von Try-Catch-Blöcken oder mithilfe des Schlüsselworts throws in ihrer Definition zur Compilerzeit behandelt wurde.

Beispiel:

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

Angenommen, wir instanziieren ein File-Klassenobjekt wie oben angegeben mit einem Pfad einer Datei, und diese Datei existiert nicht. Wenn der Compiler in diesem Fall versucht, die Datei zu lesen oder zu schreiben und eine solche Situation feststellt, löst er eine Ausnahme aus und erstellt eine Instanz der FileNotFoundExceptionclass. Falls nicht angegeben ist, welcher Konstruktor aufgerufen werden muss, wird der Konstruktor ohne Fehlermeldung ausgegeben.

Daher schlägt die Anwendung mit dem folgenden Fehler fehl:

Java FileNotFoundException

Konstruktoren von Java FileNotFoundException

FileNotFoundException ist eine Unterklasse von IOException, die sehr nützlich ist, um nachzuverfolgen, ob die im Dateipfad angegebene Datei existiert und überhaupt zugänglich ist. Um dies zu verwenden, muss man es also instanziieren, und es ist eine öffentliche Klasse; Es kann von jeder Stelle im Projekt aus instanziiert werden. Und zum Erstellen der Instanz der Klasse gibt es zwei Arten von Konstruktoren.

Im Folgenden sind die beiden Arten von Konstruktoren aufgeführt:

1. Konstruktor ohne Fehlermeldung

Diese Art von Konstruktor wird verwendet, um eine Instanz der FileNotFoundException-Klasse zu erstellen, in der sie als Fehlerdetailmeldung null zurückgibt.

Syntax:

public FileNotFoundException()

Beispiel:

FileNotFoundExceptionexcepObj = new FileNotFoundException()

2. Konstruktor mit einer Fehlermeldung

Dieser Konstruktortyp wird verwendet, um eine Instanz der FileNotFoundException-Klasse zu erstellen, in der eine angegebene Zeichenfolge als Fehlerdetailmeldung zurückgegeben wird.

Syntax:

public FileNotFoundException(String s)

Beispiel:

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

Die angegebene Fehlermeldung kann einfach mit der Methode Throwable.getMessage() abgerufen werden, da dies eine der Oberklassen der FileNotFoundException-Klasse ist.

Beispiele für Java FileNotFoundException

Im Folgenden finden Sie die genannten Beispiele:

Beispiel #1

Hier sehen wir, wie die JVM eine Ausnahme auslöst, wenn auf eine Datei nicht zugegriffen werden kann. Dabei handelt es sich bei der in der Ausgabe angezeigten Fehlermeldung um eine standardmäßig von JVM angegebene Fehlermeldung.

Code:

//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();
}
}
}

Ausgabe:

Java FileNotFoundException

Beispiel #2

In diesem Beispiel verwenden wir den Konstruktor mit einer angegebenen Fehlermeldung, um den Fehler anzuzeigen, wenn die Datei im angegebenen Pfad nicht vorhanden ist. Wir haben das Schlüsselwort throw verwendet, um die Ausnahme auszulösen.

Code:

//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());
}
}
}

Ausgabe:

Java FileNotFoundException

Wie vermeide ich FileNotFoundException?

Das Erhalten einer FileNotFoundException in einer Anwendung macht eine Anwendung ineffizient. Der erste Schritt zur Vermeidung dieser Ausnahme besteht darin, zu prüfen, ob die angegebene Datei im angegebenen Pfad vorhanden ist. Dennoch kann es in Echtzeitanwendungen vorkommen, dass die Datei fehlt oder andere Prozesse die Datei zum Lesen sperren schreibe hinein.

Fall 1: Datei fehlt

Um dies zu vermeiden, kann man mit der Methode java.io.File.exists() prüfen, ob die Datei, die man lesen möchte, im angegebenen Pfad vorhanden ist oder nicht. Auf diese Weise müssen wir sicherstellen, dass unser Code die FileNotFoundException-Ausnahme verarbeiten kann.

Fall 2: Auf die Datei kann nicht zugegriffen werden

Um solche Fälle zu vermeiden, muss man darauf achten, dass die Datei, die wir lesen möchten, derzeit von anderen Benutzern, die sie schreiben, gesperrt ist. Hierzu können wir die Methoden canRead() oder canWrite() von java.io verwenden. Dateiklasse, die angibt, ob die angegebene Datei zum Lesen oder Schreiben verfügbar ist oder nicht.

Mit diesen beiden Vorsichtsmaßnahmen kann man leicht verhindern, dass eine Instanz der Dateiklasse versucht, eine Datei zu öffnen, was zu einer geprüften Ausnahme führen kann. Dies verbessert die Effizienz einer Anwendung, die ein Programm zum Zugriff auf Dateien aus einem angegebenen Pfad enthält.

Fazit

FileNotFoundException ist eine Art geprüfte Ausnahme, die auftritt, sobald versucht wird, auf die Datei zuzugreifen, die zu diesem Zeitpunkt aufgrund einer Sperre entweder nicht existiert oder nicht zugänglich ist. Da es sich um eine geprüfte Ausnahme handelt, stellt der Java-Compiler sicher, dass sie zur Kompilierzeit behandelt wurde. Aber dennoch, wenn man es vermeiden muss, kann man die Methoden exist(), canRead() oder canWrite() verwenden, die in der File-Klasse vorhanden sind.

Das obige ist der detaillierte Inhalt vonJava FileNotFoundException. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Java ClassNotFoundExceptionNächster Artikel:Java ClassNotFoundException