FileNotFoundException és una altra classe d'excepció disponible al java.io paquet. L'excepció es produeix quan intentem accedir a aquell fitxer que no està disponible al sistema. És una excepció verificada perquè es produeix en temps d'execució, no en temps de compilació, i és llançada per un dels constructors següents:
FileNotFoundException Constructor
La classe FileNotFoundException té els dos constructors següents:
1. FileNotFoundException()
Construeix una FileNotFoundException i estableix el missatge de detall d'error nul perquè no hem passat cap paràmetre al constructor.
Sintaxi:
La sintaxi de la FileNotFoundException és el següent:
public FileNotFoundException()
2. FileNotFoundException(String str)
Construeix una FileNotFoundException i estableix el missatge de detall d'error carrer, que passem al constructor.
Sintaxi:
La sintaxi de la FileNotFoundException és el següent:
public FileNotFoundException(String str)
FileNotFoundException Mètodes
Proporciona tots els mètodes que ofereix el java.lang.Throwable i la java.lang.Object classes perquè és una subclasse d'aquestes dues classes.
Mètodes de classe java.lang.Throwable
addSuppressed (), fillInStackTrace (), getCausa (), getLocalizedMessage (), getMessage (), getStackTrace (), quedar-se suprimit (), initCause (), printStackTrace (), printStackTrace (), printStackTrace (), setStackTrace (), i toString ().
Mètodes de classe java.lang.Object
clonar (), és igual (), finalitzar (), getClass (), hashCode (), notificar (), notificar-ho tot (), i espera ().
Per obtenir més informació sobre aquests mètodes, visiteu el següent:
https://www.javatpoint.com/object-class
https://www.javatpoint.com/post/java-throwable
Per què es produeix FileNotFoundException?
Hi ha principalment dues raons per les quals obtenim aquest error. Els motius per obtenir aquesta excepció són els següents:
- Quan intentem accedir a aquest fitxer, no està disponible al sistema.
- Quan intentem accedir a aquest fitxer que és inaccessible, per exemple, si un fitxer està disponible per a l'operació de només lectura i intentem modificar-lo, pot generar l'error.
Prenem alguns exemples i entenem els dos punts anteriors un per un:
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(); } } }
Sortida:
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(); } } }
Sortida:
Gestió de FileNotFoundException
Per gestionar l'excepció, cal utilitzar el bloc try-catch. Al bloc try, posarem aquella línia de codi que pot llançar una excepció. Sempre que es produeixi una excepció, el bloc catch la gestionarà. Hi ha algunes altres maneres a través de les quals podem eliminar FileNotFountException i que són les següents:
- Si trobem el missatge d'error no hi ha aquest fitxer o directori ; podem eliminar aquesta excepció tornant a verificar el codi i comprovant si el fitxer donat està disponible al directori donat o no.
- Si trobem el missatge d'error accés denegat , hem de comprovar si el permís del fitxer és segons el nostre requisit o no. Si el permís no és el nostre requisit, hem de modificar el permís del fitxer.
- Per accés denegat missatge d'error, també hem de comprovar si aquest fitxer està en ús per un altre programa o no.
- Si trobem el missatge d'error el fitxer especificat és un directori , l'hem d'esborrar o canviar el nom del fitxer.
Per tant, a la classe FileNotFoundExceptionExample1, posem el codi FileReader al bloc try-catch i ens assegurem que el nom de fitxer donat estigui disponible al directori.
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(); } } }
Sortida: