FileNotFoundException är en annan undantagsklass tillgänglig i java.io paket. Undantaget uppstår när vi försöker komma åt den filen som inte är tillgänglig i systemet. Det är ett kontrollerat undantag eftersom det inträffar vid körningstid, inte kompileringstid, och det kastas av en av följande konstruktörer:
FileNotFoundException Constructor
FileNotFoundException-klassen har följande två konstruktorer:
1. FileNotFoundException()
Den konstruerar en FileNotFoundException och ställer in feldetaljmeddelandet null eftersom vi inte skickade någon parameter till konstruktorn.
Syntax:
Syntaxen för FileNotFoundException enligt följande:
public FileNotFoundException()
2. FileNotFoundException(String str)
Den konstruerar en FileNotFoundException och ställer in felmeddelandet str, som vi skickar till konstruktören.
Syntax:
Syntaxen för FileNotFoundException enligt följande:
public FileNotFoundException(String str)
FileNotFoundException-metoder
Den tillhandahåller alla metoder som tillhandahålls av java.lang.Kastbar och den java.lang.Object klasser eftersom det är en underklass till båda dessa klasser.
Metoder för java.lang.Throwable klass
addUpptryckt (), fillInStackTrace (), getCause (), getLocalizedMessage (), getMessage (), getStackTrace (), bli undertryckt (), initOrsak (), printStackTrace (), printStackTrace (), printStackTrace (), setStackTrace (), och att stränga ().
Metoder för java.lang.Object klass
klona (), lika (), avsluta (), getClass (), hash-kod (), meddela (), meddela Alla (), och vänta ().
För att lära dig mer om dessa metoder, besök följande:
https://www.javatpoint.com/object-class
https://www.javatpoint.com/post/java-throwable
Varför uppstår FileNotFoundException?
Det finns främst två anledningar till att vi får detta fel. Skälen till att få detta undantag är följande:
- När vi försöker komma åt den filen är den inte tillgänglig i systemet.
- När vi försöker komma åt den filen som är otillgänglig, till exempel om en fil är tillgänglig för skrivskyddad operation och försöker ändra den, kan den orsaka felet.
Låt oss ta några exempel och förstå båda punkterna ovan en efter en:
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:
Hanterar FileNotFoundException
För att hantera undantaget krävs att man använder try-catch-blocket. I försöksblocket lägger vi den kodraden som kan skapa ett undantag. Närhelst ett undantag inträffar kommer catch-blocket att hantera det. Det finns några andra sätt genom vilka vi kan ta bort FileNotFountException och som är följande:
- Om vi hittar felmeddelandet det finns ingen sådan fil eller katalog ; vi kan ta bort det undantaget genom att verifiera koden igen och kontrollera om den givna filen är tillgänglig i den givna katalogen eller inte.
- Om vi hittar felmeddelandet åtkomst nekad , måste vi kontrollera om tillståndet för filen är enligt vårt krav eller inte. Om behörigheten inte är enligt våra krav måste vi ändra filens behörighet.
- För åtkomst nekad felmeddelande måste vi också kontrollera om den filen används av ett annat program eller inte.
- Om vi hittar felmeddelandet den angivna filen är en katalog , måste vi ta bort den eller ändra namnet på filen.
Så i klassen FileNotFoundExceptionExample1 lägger vi FileReader-koden i try-catch-blocket och säkerställer att det angivna filnamnet är tillgängligt i katalogen.
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: