如何在Java中处理EOFException?
在某些情况下,读取文件内容时会到达文件末尾,在这种情况下会抛出EOFException异常。
尤其是在使用输入流对象读取数据时,会抛出此异常。在其他情况下,到达文件末尾时会抛出特定值。
示例
让我们考虑DataInputStream类,它提供了各种方法,例如readboolean()、readByte()、readChar()等,用于读取原始值。使用这些方法从文件读取数据时,如果到达文件末尾,则会抛出EOFException异常。
import java.io.DataInputStream;
import java.io.FileInputStream;
public class EOFExample {
public static void main(String[] args) throws Exception {
//Reading from the above created file using readChar() method
DataInputStream dis = new DataInputStream(new FileInputStream("D:\data.txt"));
while(true) {
char ch;
ch = dis.readChar();
System.out.print(ch);
}
}
}运行时异常
Hello how are youException in thread "main" java.io.EOFException at java.io.DataInputStream.readChar(Unknown Source) at SEPTEMBER.remaining.EOFExample.main(EOFExample.java:11)
处理EOFException
您无法使用**DataInputStream**类读取文件内容而不会到达文件末尾。如果需要,您可以使用InputStream接口的其他子类。
示例
在下面的示例中,我们使用FileInputStream类而不是**DataInputStream**类来从文件读取数据,重写了上面的程序。
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 {
//Reading data from user
byte[] buf = " Hello how are you".getBytes();
//Writing it to a file using the DataOutputStream
DataOutputStream dos = new DataOutputStream(new FileOutputStream("D:\data.txt"));
for (byte b:buf) {
dos.writeChar(b);
}
dos.flush();
System.out.println("Data written successfully");
}
}输出
Data written successfully
以下是另一种在Java中处理EOFException的方法:
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
public class HandlingEOF {
public static void main(String[] args) throws Exception {
DataInputStream dis = new DataInputStream(new FileInputStream("D:\data.txt"));
while(true) {
char ch;
try {
ch = dis.readChar();
System.out.print(ch);
} catch (EOFException e) {
System.out.println("");
System.out.println("End of file reached");
break;
} catch (IOException e) {
}
}
}
}输出
Hello how are you End of file reached
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP