提问人:mramz 提问时间:7/25/2021 更新时间:7/25/2021 访问量:99
为什么 readLong 方法会导致 EOFException?
why does readLong method cause EOFException?
问:
当我执行以下代码时,它在第 10 行抛出 eof 异常。它似乎无法执行readLong方法。我该怎么办?
try (DataOutputStream dataOutputStream=new DataOutputStream(new BufferedOutputStream(new
FileOutputStream("1.dat")));
DataInputStream dataInputStream=new DataInputStream(new BufferedInputStream(new
FileInputStream("C:\\Users\\Asus\\IdeaProjects\\Example" +
"\\1.dat")))){
dataOutputStream.writeLong(123);
dataOutputStream.writeChar('D');
dataOutputStream.writeUTF("Hello!");
System.out.println(dataInputStream.readLong());//exception occurse here
System.out.println(dataInputStream.readChar());
System.out.println(dataInputStream.readUTF());
}catch (IOException e){
e.printStackTrace();
}
答:
0赞
mss
7/25/2021
#1
您在写入文件之前正在阅读文件的问题。当您读取文件时,它是空的。此外,在关闭流之前,数据不会保存到文件中。因此,如果要读取写入的值,则应关闭输入流,然后读取文件。 还要注意输出流文件路径与输入流不同
这里有一个例子:
try ( DataOutputStream dataOutputStream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("1.dat")))) {
dataOutputStream.writeLong(123);
dataOutputStream.writeChar('D');
dataOutputStream.writeUTF("Hello!");
dataOutputStream.close();
DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream("1.dat")));
System.out.println(dataInputStream.readLong());
System.out.println(dataInputStream.readChar());
System.out.println(dataInputStream.readUTF());
} catch (IOException e) {
e.printStackTrace();
}
评论
0赞
Gaël J
7/25/2021
关闭不是必需的,但刷新数据以确保它们被写入磁盘是必需的。
评论