logo

FileNotFoundException в Java

FileNotFoundException е друг клас изключения, наличен в java.io пакет. Изключението възниква, когато се опитаме да получим достъп до този файл, който не е наличен в системата. Това е проверено изключение, защото се случва по време на изпълнение, а не по време на компилиране, и се хвърля от един от следните конструктори:

    RandomAccessFile FileInputStream FileOutputStream
FileNotFoundException в Java

FileNotFoundException Конструктор

Класът FileNotFoundException има следните два конструктора:

1. FileNotFoundException()

Той конструира FileNotFoundException и задава null на подробното съобщение за грешка, защото не сме предали никакъв параметър на конструктора.

Синтаксис:

Синтаксисът на FileNotFoundException е както следва:

 public FileNotFoundException() 

2. FileNotFoundException(String str)

Той конструира FileNotFoundException и задава подробното съобщение за грешка улица, които предаваме на конструктора.

Синтаксис:

Синтаксисът на FileNotFoundException е както следва:

 public FileNotFoundException(String str) 

FileNotFoundException методи

Той предоставя всички методи, предоставени от java.lang.Throwable и на java.lang.Object класове, защото е подклас и на двата класа.

Методи на java.lang.Throwable клас

addSuppressed (), fillInStackTrace (), getCause (), getLocalizedMessage (), getMessage (), getStackTrace (), getSuppressed (), initCause (), printStackTrace (), printStackTrace (), printStackTrace (), setStackTrace (), и toString ().

Методи на класа java.lang.Object

клонинг (), равно на (), финализирам (), getClass (), хеш код (), уведомявам (), notifyAll (), и изчакайте ().

За да научите повече за тези методи, посетете следното:

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

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

Защо възниква FileNotFoundException?

Има основно две причини, поради които получаваме тази грешка. Причините за получаване на това изключение са следните:

  1. Когато се опитаме да получим достъп до този файл, той не е наличен в системата.
  2. Когато се опитаме да получим достъп до този файл, който е недостъпен, например, ако даден файл е наличен за операция само за четене и се опитаме да го модифицираме, това може да изведе грешката.

Нека да вземем няколко примера и да разберем и двете горни точки една по една:

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

Изход:

FileNotFoundException в Java

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

Изход:

FileNotFoundException в Java

Обработка на FileNotFoundException

За да се обработи изключението, е необходимо да се използва блокът try-catch. В блока try ще поставим този ред код, който може да хвърли изключение. Всеки път, когато възникне изключение, catch блокът ще го обработи. Има някои други начини, чрез които можем да премахнем FileNotFountException и които са както следва:

  1. Ако открием съобщението за грешка няма такъв файл или директория ; можем да премахнем това изключение чрез повторна проверка на кода и проверка дали дадения файл е наличен в дадената директория или не.
  2. Ако открием съобщението за грешка достъпът е отказан , трябва да проверим дали разрешението на файла отговаря на нашите изисквания или не. Ако разрешението не отговаря на нашите изисквания, трябва да променим разрешението на файла.
  3. За достъпът е отказан съобщение за грешка, ние също трябва да проверим дали този файл се използва от друга програма или не.
  4. Ако открием съобщението за грешка посоченият файл е директория , трябва да го изтрием или да променим името на файла.

Така че в класа FileNotFoundExceptionExample1 поставяме кода на FileReader в блока try-catch и гарантираме, че даденото име на файл е налично в директорията.

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

Изход:

FileNotFoundException в Java