FileNotFoundException è un'altra classe di eccezioni disponibile in java.io pacchetto. L'eccezione si verifica quando proviamo ad accedere a quel file che non è disponibile nel sistema. È un'eccezione verificata perché si verifica in fase di esecuzione, non in fase di compilazione, e viene generata da uno dei seguenti costruttori:
Costruttore FileNotFoundException
La classe FileNotFoundException ha i due costruttori seguenti:
1. FileNotFoundException()
Costruisce una FileNotFoundException e imposta il messaggio di dettaglio dell'errore nullo perché non abbiamo passato alcun parametro al costruttore.
Sintassi:
La sintassi di FileNotFoundException è come segue:
public FileNotFoundException()
2. FileNotFoundException(String str)
Costruisce una FileNotFoundException e imposta il messaggio di dettaglio dell'errore forza, che passiamo al costruttore.
Sintassi:
La sintassi di FileNotFoundException è come segue:
public FileNotFoundException(String str)
Metodi FileNotFoundException
Fornisce tutti i metodi forniti da java.lang.Throwable e il java.lang.Object classi perché è una sottoclasse di entrambe queste classi.
Metodi della classe java.lang.Throwable
addSuppressed (), fillInStackTrace (), getCause (), getLocalizedMessage (), getMessage (), getStackTrace (), essere soppresso (), initCause (), printStackTrace (), printStackTrace (), printStackTrace (), setStackTrace (), E accordare ().
Metodi della classe java.lang.Object
clone (), equivale (), finalizzare (), getClass (), codice hash (), notificare (), notificaTutto (), E Aspettare ().
Per ulteriori informazioni su questi metodi, visitare quanto segue:
https://www.javatpoint.com/object-class
https://www.javatpoint.com/post/java-throwable
Perché si verifica FileNotFoundException?
Ci sono principalmente due ragioni per cui otteniamo questo errore. I motivi per ottenere questa eccezione sono i seguenti:
- Quando proviamo ad accedere a quel file, questo non è disponibile nel sistema.
- Quando proviamo ad accedere a quel file che è inaccessibile, ad esempio, se un file è disponibile per l'operazione di sola lettura e proviamo a modificarlo, può generare l'errore.
Facciamo alcuni esempi e comprendiamo uno per uno entrambi i punti precedenti:
FileNotFoundEsempio1.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(); } } }
Produzione:
FileNotFoundEsempio2.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(); } } }
Produzione:
Gestione dell'eccezione FileNotFoundException
Per gestire l'eccezione è necessario utilizzare il blocco try-catch. Nel blocco try inseriremo la riga di codice che può generare un'eccezione. Ogni volta che si verifica un'eccezione, il blocco catch la gestirà. Esistono altri modi attraverso i quali possiamo rimuovere il file FileNotFountException e che sono i seguenti:
- Se troviamo il messaggio di errore non esiste un file o una directory di questo tipo ; possiamo rimuovere quell'eccezione verificando nuovamente il codice e controllando se il file specificato è disponibile o meno nella directory specificata.
- Se troviamo il messaggio di errore l'accesso è negato , dobbiamo verificare se l'autorizzazione del file è conforme ai nostri requisiti o meno. Se l'autorizzazione non è conforme ai nostri requisiti, dobbiamo modificare l'autorizzazione del file.
- Per l'accesso è negato messaggio di errore, dobbiamo anche verificare se quel file è utilizzato o meno da un altro programma.
- Se troviamo il messaggio di errore il file specificato è una directory , dobbiamo eliminarlo o cambiare il nome del file.
Pertanto, nella classe FileNotFoundExceptionExample1, inseriamo il codice FileReader nel blocco try-catch e ci assicuriamo che il nome file specificato sia disponibile nella directory.
FileNotFoundEsempio1.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(); } } }
Produzione: