EOFException-Beispiel in Java

EOFException wird in Java ausgelöst, wenn beim Verarbeiten der Eingabe unerwartet das Ende der Datei erreicht wird. Diese Ausnahmen werden beim Arbeiten mit den Klassen DataInputStream, ObjectInputStream und RandomAccessFile ausgelöst. Alle diese Klassen verwenden eine der Stream-Klassen wie FileInputStream zum Lesen der Daten. Wenn im Stream keine Daten verfügbar sind, weil DataInputStream versucht, einige Daten zu lesen, wird diese Ausnahme ausgelöst. Dies ist eine Unterklasse von IOException.

EOFException-Beispiel

Diese Ausnahme wird ausgelöst, wenn Sie das Ende eines Streams erreichen (Ende der Datei oder Peer schließt die Verbindung):

  • Die Methode read() gibt -1 zurück
  • Die Methode readLine() gibt null zurück
  • readXXX() löst für jedes andere X eine EOFException aus. Hier bedeutet X, dass der Methodenname readInt, readFloat usw. wäre. Wenn Sie beispielsweise versuchen, eine dieser Methoden zu lesen, würde sie eine bestimmte Länge von Streams im zugrunde liegenden FileInputStream erwarten. Wenn dieser leer ist, wird eine EOFException ausgelöst. Auch wenn Sie readInt verwenden und in der Datei nur Float verfügbar ist, wird dieselbe Ausnahme ausgelöst.

Hier ist das Beispiel für eine Anwendung, die eine EOFException auslöst:

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ExceptionExample {
	public void testMethod1(){
		File file = new File("test.txt");
		DataInputStream dataInputStream =  null;
		try{
			dataInputStream = new DataInputStream(new FileInputStream(file));
			while(true){
				dataInputStream.readInt();	
			}			
		}catch (EOFException e){			
			e.printStackTrace();
		}
		catch (IOException e){
			e.printStackTrace();
		}
		finally{
			try{
				if (dataInputStream != null){
					dataInputStream.close();
				}
			}catch (IOException e){
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args){
		ExceptionExample instance1 = new ExceptionExample();
		instance1.testMethod1();
	}
}

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausnahme:

java.io.EOFException
	at java.io.DataInputStream.readInt(DataInputStream.java:392)
	at logging.simple.ExceptionExample.testMethod1(ExceptionExample.java:16)
	at logging.simple.ExceptionExample.main(ExceptionExample.java:36)

Ich habe das obige Programm dazu gezwungen, die EOFException auszulösen, indem ich die While-Schleifenbedingung auf „true“ gesetzt habe. Dadurch wird Ihr Programm auch nach dem Lesen aller Daten ausgeführt und die Ausnahme ausgelöst. Der Anwendungsprogrammierer muss sicherstellen, dass die aus dem Stream gelesenen Daten korrekt sind und geschlossen werden, wenn keine Daten mehr im Stream vorhanden sind

Ich hoffe, dass dieses Tutorial eine gute Vorstellung von den Szenarien liefert, in denen EOFException von einer Java-Anwendung ausgelöst wird. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen