Bem-vindo ao meu blog

Compartilhando conhecimento sobre tecnologia, programação e mais!

Entendendo a java.io.EOFException

Publicado em: 08 de August de 2025 | Categorias: Java
Entendendo a java.io.EOFException

Quando trabalhamos com leitura e escrita de arquivos em Java, é comum lidar com fluxos de dados (InputStream, Reader, etc.). Uma exceção bastante conhecida nesse contexto é a java.io.EOFException, que acontece quando o programa tenta ler além do fim do arquivo (EOF – End Of File).

Na prática, isso significa que você pediu mais dados do que realmente existem. Esse erro aparece bastante quando usamos classes como DataInputStream ou ObjectInputStream.

Exemplo prático

Imagine que temos um arquivo binário com números inteiros gravados. Vamos tentar ler esses dados:

     
     import java.io.*;

     public class ExemploEOF {

         public static void main(String[] args) {
             File arquivo = new File("numeros.dat");

             try (DataOutputStream out = new DataOutputStream(new FileOutputStream(arquivo))) {
                 // escrevendo alguns números
                 out.writeInt(10);
                 out.writeInt(20);
                 out.writeInt(30);
             } catch (IOException e) {
                 e.printStackTrace();
             }

             try (DataInputStream in = new DataInputStream(new FileInputStream(arquivo))) {
                 while (true) {
                     int numero = in.readInt();
                     System.out.println("Número lido: " + numero);
                 }
             } catch (EOFException e) {
                 e.printStackTrace();
                 System.out.println("Fim do arquivo alcançado." );
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     }
     
 

O que acontece aqui?

Conclusão

A EOFException não significa necessariamente um erro grave: ela é apenas um aviso de que não há mais dados para serem lidos. A forma correta de lidar com isso é prever esse cenário, tratando a exceção ou controlando melhor o fluxo de leitura.