FileNotFoundException er en anden undtagelsesklasse tilgængelig i java.io pakke. Undtagelsen opstår, når vi forsøger at få adgang til den fil, som ikke er tilgængelig i systemet. Det er en kontrolleret undtagelse, fordi den forekommer ved kørselstid, ikke kompileringstid, og den er smidt af en af følgende konstruktører:
FileNotFoundException Constructor
FileNotFoundException-klassen har følgende to konstruktører:
1. FileNotFoundException()
Den konstruerer en FileNotFoundException og indstiller fejldetaljemeddelelsen null, fordi vi ikke har sendt nogen parameter til konstruktøren.
Syntaks:
Syntaksen for FileNotFoundException er som følgende:
public FileNotFoundException()
2. FileNotFoundException(String str)
Den konstruerer en FileNotFoundException og indstiller fejlmeddelelsen str, som vi videregiver til konstruktøren.
Syntaks:
Syntaksen for FileNotFoundException er som følgende:
public FileNotFoundException(String str)
FileNotFoundException-metoder
Det giver alle de metoder, der leveres af java.lang.Kastbar og java.lang.Object klasser, fordi det er en underklasse af begge disse klasser.
Metoder til java.lang.Throwable klasse
tilføje Undertrykt (), fillInStackTrace (), getCause (), getLocalizedMessage (), getMessage (), getStackTrace (), blive undertrykt (), initCause (), printStackTrace (), printStackTrace (), printStackTrace (), setStackTrace (), og til String ().
Metoder til java.lang.Object klasse
klon (), lige med (), afslutte (), getClass (), hashkode (), underrette (), underrette Alle (), og vente ().
For at lære mere om disse metoder, besøg følgende:
https://www.javatpoint.com/object-class
https://www.javatpoint.com/post/java-throwable
Hvorfor opstår FileNotFoundException?
Der er hovedsageligt to grunde til, at vi får denne fejl. Årsagerne til at få denne undtagelse er som følger:
- Når vi forsøger at få adgang til den fil, er den ikke tilgængelig i systemet.
- Når vi forsøger at få adgang til den fil, som er utilgængelig, for eksempel, hvis en fil er tilgængelig til skrivebeskyttet drift og forsøger at ændre den, kan den give fejlen.
Lad os tage nogle eksempler og forstå begge ovenstående punkter én efter én:
FileNotFoundExample1.java
// import required classes and packages package javaTpoint.MicrosoftJava; import java.io.*; // it contains all the input and the output streams // create FileNotFoundExceptionExample1 to undestand the first point. public class FileNotFoundExceptionExample1 { public static void main(String[] args) { // creating an instance of the FileReader class FileReader fileReader = new FileReader('Test.txt'); // create an instance of the BufferedReader and pass the FileReader instance to it. BufferedReader bufferReader = new BufferedReader(fileReader); // declaring an empty string by passing null value String fileData = null; // use while loop to read and print data from buffered reader while ((fileData = bufferReader.readLine()) != null) { System.out.println(fileData); } // closing the BufferedReader object try { bufferReader.close(); } catch (IOException e) { e.printStackTrace(); } } }
Produktion:
FileNotFoundExample2.java
// import required classes and packages package javaTpoint.MicrosoftJava; import java.io.*; // it contains all the input and the output streams // create FileNotFoundExceptionExample2 to understand the second point. public class FileNotFoundExceptionExample2 { // main() method start public static void main(String[] args) { try { // creating an instance of the File class to open file File fileObj = new File('Test.txt'); // creating an instance of the PrintWriter class by initiating FileWriter class instance PrintWriter printWriter1 = new PrintWriter(new FileWriter(fileObj), true); // print simple text hello world printWriter1.println('Hello world'); printWriter1.close(); // making Test file read only fileObj.setReadOnly(); // try to write data into Test.txt file PrintWriter printWriter2 = new PrintWriter(new FileWriter('Test.txt'), true); printWriter2.println('Hello World'); printWriter2.close(); } // catching exception thrown by the try block catch(Exception ex) { ex.printStackTrace(); } } }
Produktion:
Håndtering af FileNotFoundException
For at håndtere undtagelsen er det nødvendigt at bruge try-catch-blokken. I prøveblokken vil vi sætte den kodelinje, der kan give en undtagelse. Når der opstår en undtagelse, vil catch-blokken håndtere det. Der er nogle andre måder, hvorpå vi kan fjerne FileNotFountException og som er som følger:
- Hvis vi finder fejlmeddelelsen der er ingen sådan fil eller mappe ; vi kan fjerne denne undtagelse ved at genbekræfte koden og kontrollere, om den givne fil er tilgængelig i den givne mappe eller ej.
- Hvis vi finder fejlmeddelelsen adgang nægtet , skal vi kontrollere, om tilladelsen til filen er i overensstemmelse med vores krav eller ej. Hvis tilladelsen ikke er i overensstemmelse med vores krav, er vi nødt til at ændre filens tilladelse.
- Til adgang nægtet fejlmeddelelse, skal vi også kontrollere, om den fil er i brug af et andet program eller ej.
- Hvis vi finder fejlmeddelelsen den angivne fil er en mappe , vi er nødt til at slette den eller ændre navnet på filen.
Så i FileNotFoundExceptionExample1-klassen placerer vi FileReader-koden i try-catch-blokken og sikrer, at det givne filnavn er tilgængeligt i mappen.
FileNotFoundExample1.java
// import required classes and packages package javaTpoint.MicrosoftJava; import java.io.*; // it contains all the input and the output streams // create FileNotFoundExceptionExample1 public class FileNotFoundExceptionExample1 { public static void main(String[] args) { // creating an instance of the FileReader class FileReader fileReader; try { fileReader = new FileReader('Test.txt'); // create instance of the BufferedReader and pass the FileReader instance to it. BufferedReader bufferReader = new BufferedReader(fileReader); // declaring an empty string by passing null value String fileData = null; // use while loop to read and print data from buffered reader try { while ((fileData = bufferReader.readLine()) != null) { System.out.println(fileData); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }
Produktion: