FileNotFoundException é outra classe de exceção disponível no java.io pacote. A exceção ocorre quando tentamos acessar aquele arquivo que não está disponível no sistema. É uma exceção verificada porque ocorre em tempo de execução, não em tempo de compilação, e é lançada por um dos seguintes construtores:
Construtor FileNotFoundException
A classe FileNotFoundException possui os dois construtores a seguir:
filmes
1. FileNotFoundException()
Ele constrói uma FileNotFoundException e define a mensagem de detalhes do erro como nula porque não passamos nenhum parâmetro para o construtor.
Sintaxe:
A sintaxe do FileNotFoundException é o seguinte:
public FileNotFoundException()
2. FileNotFoundException(Stringstr)
Ele constrói uma FileNotFoundException e define a mensagem de detalhes do erro str, que passamos para o construtor.
Sintaxe:
A sintaxe do FileNotFoundException é o seguinte:
public FileNotFoundException(String str)
Métodos FileNotFoundException
Ele fornece todos os métodos fornecidos pelo java.lang.Throwable e a java.lang.Object classes porque é uma subclasse de ambas as classes.
Métodos da classe java.lang.Throwable
addSupprimido (), fillInStackTrace (), obterCausa (), getLocalizedMessage (), getMessage (), getStackTrace (), getSupprimido (), initCausa (), printStackTrace (), printStackTrace (), printStackTrace (), setStackTrace (), e para sequenciar ().
Métodos da classe java.lang.Object
clone (), é igual a (), finalizar (), getClass (), código hash (), notificar (), notificar todos (), e espere ().
Para saber mais sobre esses métodos, visite o seguinte:
https://www.javatpoint.com/object-class
https://www.javatpoint.com/post/java-throwable
Por que ocorre FileNotFoundException?
Existem principalmente duas razões pelas quais obtemos esse erro. Os motivos para obter esta exceção são os seguintes:
- Quando tentamos acessar esse arquivo, ele não fica disponível no sistema.
- Quando tentamos acessar aquele arquivo que está inacessível, por exemplo, se um arquivo está disponível para operação somente leitura e tentamos modificá-lo, isso pode gerar o erro.
Vamos pegar alguns exemplos e entender os dois pontos acima, um por um:
ArquivoNotFoundExample1.java
quem inventou a escola
// 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(); } } }
Saída:
ArquivoNotFoundExample2.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(); } } }
Saída:
Tratamento de FileNotFoundException
Para tratar a exceção, é necessário usar o bloco try-catch. No bloco try, colocaremos aquela linha de código que pode lançar uma exceção. Sempre que ocorrer uma exceção, o bloco catch irá tratá-la. Existem algumas outras maneiras pelas quais podemos remover o FileNotFountException e que são os seguintes:
- Se encontrarmos a mensagem de erro não existe tal arquivo ou diretório ; podemos remover essa exceção verificando novamente o código e verificando se o arquivo fornecido está disponível no diretório determinado ou não.
- Se encontrarmos a mensagem de erro acesso negado , temos que verificar se a permissão do arquivo está de acordo com nossa exigência ou não. Se a permissão não estiver de acordo com nossos requisitos, teremos que modificar a permissão do arquivo.
- Para acesso negado mensagem de erro, também temos que verificar se esse arquivo está em uso por outro programa ou não.
- Se encontrarmos a mensagem de erro o arquivo especificado é um diretório , temos que excluí-lo ou alterar o nome do arquivo.
Portanto, na classe FileNotFoundExceptionExample1, colocamos o código FileReader no bloco try-catch e garantimos que o nome de arquivo fornecido esteja disponível no diretório.
ArquivoNotFoundExample1.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(); } } }
Saída: