logo

FileNotFoundException w Javie

Wyjątek FileNotFoundException to kolejna klasa wyjątków dostępna w Java.io pakiet. Wyjątek ma miejsce, gdy próbujemy uzyskać dostęp do pliku, którego nie ma w systemie. Jest to sprawdzany wyjątek, ponieważ występuje w czasie wykonywania, a nie w czasie kompilacji, i jest zgłaszany przez jeden z następujących konstruktorów:

    Plik o dostępie losowym Strumień wejściowy pliku Strumień pliku wyjściowego
FileNotFoundException w Javie

Konstruktor FileNotFoundException

Klasa FileNotFoundException ma następujące dwa konstruktory:

1. Wyjątek FileNotFound()

Konstruuje wyjątek FileNotFoundException i ustawia komunikat o szczegółach błędu na wartość null, ponieważ nie przekazaliśmy żadnego parametru do konstruktora.

Składnia:

Składnia Wyjątek FileNotFoundException następująco:

 public FileNotFoundException() 

2. Wyjątek FileNotFoundException (str)

Konstruuje wyjątek FileNotFoundException i ustawia komunikat ze szczegółami błędu ul, które przekazujemy konstruktorowi.

Składnia:

mój żywy krykiet

Składnia Wyjątek FileNotFoundException następująco:

 public FileNotFoundException(String str) 

Metody FileNotFoundException

Zawiera wszystkie metody dostarczane przez java.lang.Można rzucać i Obiekt Java.lang.Object klas, ponieważ jest podklasą obu tych klas.

Metody klasy java.lang.Throwable

dodajPominięte (), fillInStackTrace (), pobierz przyczynę (), pobierzLocalizedMessage (), pobierz wiadomość (), pobierzStackTrace (), zostać stłumionym (), initPrzyczyna (), printStackTrace (), printStackTrace (), printStackTrace (), ustawStackTrace (), I doString ().

Metody klasy java.lang.Object

klon (), równa się (), sfinalizować (), pobierzKlasę (), hashCode (), notyfikować (), powiadom wszystkich (), I Czekać ().

Aby dowiedzieć się więcej na temat tych metod, odwiedź następujące strony:

ciąg zastępczy Java

https://www.javatpoint.com/object-class

https://www.javatpoint.com/post/java-throwable

Dlaczego występuje wyjątek FileNotFoundException?

Istnieją głównie dwa powody, dla których pojawia się ten błąd. Powody uzyskania tego wyjątku są następujące:

  1. Kiedy próbujemy uzyskać dostęp do tego pliku, nie jest on dostępny w systemie.
  2. Kiedy na przykład próbujemy uzyskać dostęp do niedostępnego pliku, jeśli plik jest dostępny do operacji tylko do odczytu i próbujemy go zmodyfikować, może to spowodować błąd.

Weźmy kilka przykładów i zrozumiejmy oba powyższe punkty jeden po drugim:

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(); } } } 

Wyjście:

FileNotFoundException w Javie

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(); } } } 

Wyjście:

lokalna data i godzina Java
FileNotFoundException w Javie

Obsługa wyjątku FileNotFoundException

Aby obsłużyć wyjątek, wymagane jest użycie bloku try-catch. W bloku try umieścimy linię kodu, która może zgłosić wyjątek. Ilekroć wystąpi wyjątek, blok catch obsłuży go. Istnieje kilka innych sposobów, dzięki którym możemy usunąć Wyjątek FileNotFount i które są następujące:

  1. Jeśli znajdziemy komunikat o błędzie nie ma takiego pliku ani katalogu ; możemy usunąć ten wyjątek ponownie weryfikując kod i sprawdzając, czy dany plik jest dostępny w danym katalogu, czy nie.
  2. Jeśli znajdziemy komunikat o błędzie dostęp jest zabroniony , musimy sprawdzić, czy uprawnienia do pliku są zgodne z naszymi wymaganiami, czy nie. Jeśli uprawnienie nie jest zgodne z naszymi wymaganiami, musimy zmodyfikować uprawnienia do pliku.
  3. Dla dostęp jest zabroniony komunikat o błędzie, musimy także sprawdzić, czy plik ten jest używany przez inny program, czy nie.
  4. Jeśli znajdziemy komunikat o błędzie określony plik jest katalogiem , musimy go usunąć lub zmienić nazwę pliku.

Zatem w klasie FileNotFoundExceptionExample1 umieszczamy kod FileReader w bloku try-catch i upewniamy się, że podana nazwa pliku jest dostępna w katalogu.

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(); } } } 

Wyjście:

FileNotFoundException w Javie