FileNotFoundException je še en razred izjem, ki je na voljo v java.io paket. Izjema se zgodi, ko poskušamo dostopati do datoteke, ki ni na voljo v sistemu. Je preverjena izjema, ker se pojavi v času izvajanja, ne v času prevajanja, vrže pa jo eden od naslednjih konstruktorjev:
FileNotFoundException Constructor
Razred FileNotFoundException ima naslednja dva konstruktorja:
1. FileNotFoundException()
Konstruira FileNotFoundException in nastavi sporočilo s podrobnostmi o napaki na ničelno vrednost, ker konstruktorju nismo posredovali nobenega parametra.
Sintaksa:
Sintaksa za FileNotFoundException kot sledi:
public FileNotFoundException()
2. FileNotFoundException(String str)
Konstruira FileNotFoundException in nastavi sporočilo s podrobnostmi o napaki str, ki jih posredujemo konstruktorju.
Sintaksa:
Sintaksa za FileNotFoundException kot sledi:
public FileNotFoundException(String str)
Metode FileNotFoundException
Ponuja vse metode, ki jih ponuja java.lang.Throwable in java.lang.Object razredov, ker je podrazred obeh razredov.
Metode razreda java.lang.Throwable
addSuppressed (), fillInStackTrace (), getCause (), getLocalizedMessage (), getMessage (), getStackTrace (), getSuppressed (), initCause (), printStackTrace (), printStackTrace (), printStackTrace (), setStackTrace (), in toString ().
Metode razreda java.lang.Object
klon (), enako (), dokončati (), getClass (), hashCode (), obvestiti (), notifyAll (), in čakati ().
Če želite izvedeti več o teh metodah, obiščite naslednje:
https://www.javatpoint.com/object-class
https://www.javatpoint.com/post/java-throwable
Zakaj se pojavi FileNotFoundException?
Razloga za to napako sta predvsem dva. Razlogi za pridobitev te izjeme so naslednji:
- Ko poskušamo dostopati do te datoteke, ta ni na voljo v sistemu.
- Ko poskušamo dostopati do te datoteke, ki je nedostopna, na primer, če je datoteka na voljo za operacijo samo za branje in jo poskušamo spremeniti, lahko povzroči napako.
Vzemimo nekaj primerov in razumemo obe zgornji točki eno za drugo:
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(); } } }
Izhod:
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(); } } }
Izhod:
Ravnanje z izjemo FileNotFoundException
Za obravnavo izjeme je treba uporabiti blok try-catch. V blok poskusa bomo postavili tisto vrstico kode, ki lahko povzroči izjemo. Kadarkoli pride do izjeme, jo bo obravnaval blok catch. Obstaja nekaj drugih načinov, s katerimi jih lahko odstranimo FileNotFountException in ki so naslednji:
- Če najdemo sporočilo o napaki take datoteke ali imenika ni ; to izjemo lahko odstranimo tako, da ponovno preverimo kodo in preverimo, ali je podana datoteka na voljo v danem imeniku ali ne.
- Če najdemo sporočilo o napaki dostop je zavrnjen , moramo preveriti, ali dovoljenje datoteke ustreza našim zahtevam ali ne. Če dovoljenje ni v skladu z našimi zahtevami, moramo spremeniti dovoljenje datoteke.
- Za dostop je zavrnjen sporočilo o napaki, moramo tudi preveriti, ali to datoteko uporablja drug program ali ne.
- Če najdemo sporočilo o napaki podana datoteka je imenik , jo moramo izbrisati ali spremeniti ime datoteke.
Torej, v razredu FileNotFoundExceptionExample1 postavimo kodo FileReader v blok try-catch in zagotovimo, da je podano ime datoteke na voljo v imeniku.
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(); } } }
Izhod: