English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In einigen Fällen wird EOFException ausgelöst, wenn das Ende der Datei erreicht wird, wenn der Inhalt der Datei gelesen wird.
Besonders wird diese Ausnahme bei der Verwendung von Input-Stream-Objekten zum Lesen von Daten ausgelöst. In anderen Fällen wird eine spezifische Wert ausgelöst, wenn das Ende der Datei erreicht wird.
In der Klasse DataInputStream bietet sie verschiedene Methoden, z.B.readboolean()
,readByte()
,readChar()
u.a. werden die ursprünglichen Werte gelesen. Wenn diese Methoden verwendet werden, um Daten aus der Datei zu lesen, wird EOFException ausgelöst, wenn das Ende der Datei erreicht wird.
Das folgende Programm zeigt, wie man EOFException in Java behandelt.
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Scanner; public class AIOBSample { public static void main(String[] args) throws Exception { //Daten vom Benutzer lesen Scanner sc = new Scanner(System.in); System.out.println("Gib einen String ein:"); String data = sc.nextLine(); byte[] buf = data.getBytes(); //Schreibe es in die Datei DataOutputStream dos = new DataOutputStream(new FileOutputStream("D:\\data.txt")); for (byte b : buf) { dos.writeChar(b); } dos.flush(); //Lesen aus der oben erstellten Datei mit dem readChar()-Verfahren DataInputStream dis = new DataInputStream(new FileInputStream("D:\\data.txt")); while(true) { char ch; ch = dis.readChar(); System.out.print(ch); } } }
Ausgabenergebnis
Gib einen String ein: hello how are you helException in thread "main" lo how are youjava.io.EOFException at java.io.DataInputStream.readChar(Unknown Source) at MyPackage.AIOBSample.main(AIOBSample.java:27)
Sie könnenDataInputStreamDer Class liest den Inhalt der Datei bis zum Ende der Datei. Wenn erforderlich, können Sie andere Unterklasse des InputStream-Interface verwenden.
Im folgenden Beispiel verwenden wir die Klasse FileInputStream anstelle von DataInputStream, um den obigen Code zu ändern, um Daten aus der Datei zu lesen.
import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Scanner; public class AIOBSample { public static void main(String[] args) throws Exception { //Daten vom Benutzer lesen Scanner sc = new Scanner(System.in); System.out.println("Gib einen String ein:"); String data = sc.nextLine(); byte[] buf = data.getBytes(); //Schreibe es in die Datei DataOutputStream dos = new DataOutputStream(new FileOutputStream("D:\\data.txt")); for (byte b : buf) { dos.writeChar(b); } dos.flush(); //Lesen aus der oben erstellten Datei mit dem readChar()-Verfahren File file = new File("D:\\data.txt"); FileInputStream fis = new FileInputStream(file); byte b[] = new byte[(int) file.length()]; fis.read(b); System.out.println("Inhalt der Datei: ");+new String(b)); } }
Ausgabenergebnis
Gib einen String ein: Hallo, wie geht es dir? Inhalt der Datei: H e l l o h o w a r e y o u