gpt4 book ai didi

java - ObjectInputStream.readObject() 给出 EOFException

转载 作者:行者123 更新时间:2023-12-02 09:49:03 24 4
gpt4 key购买 nike

我对编程完全陌生,所以我很难解决自己的错误。有人建议我在这个网站上尝试一下,所以我想为什么不尝试一下呢。

我发现的有关此错误的其他帖子似乎不太相关:大多数人建议关闭输入流,但我的代码已经这样做了。

我想要它做什么:将名为“photo”的照片对象写入名为“test.ser”的文件。然后读取文件“test.ser”并将“test.ser”中对象(“照片”)的路径返回给我。

它的实际作用:将名为“photo”的照片对象写入“test.ser”。读取“test.ser”,返回 EOFException 并且没有路径。

返回路径实际上并不是很重要,只要它返回对我有值(value)的东西即可。但是当我使用“System.out.println(photo)”或“photo.getId()”时,我遇到了同样的错误。

我不太确定需要在此处粘贴什么,因此我将发布用于序列化和反序列化对象的两个 try/catch-es:

序列化对象:

    File test = new File("path.../something.ser");
Photo photo = new Photo(2, "..\\images\\2.jpg", getImage("..\\images\\2.jpg"));

try {
FileOutputStream fos = new FileOutputStream(test);
ObjectOutputStream out = new ObjectOutputStream(fos);

if (!test.exists()) {
test.createNewFile();
}
out.writeObject(photo);
out.close();
} catch (IOException e) {
e.printStackTrace();
}

反序列化对象:

        try {
FileInputStream fis = new FileInputStream(test);
ObjectInputStream in = new ObjectInputStream(fis);

in.readObject();

photo = (Photo)in.readObject();
photo.getPath();
in.close();

} catch (Exception e) {
e.printStackTrace();
}

错误:

run:
null
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2571)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1315)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at view.Main.<init>(Main.java:103)
//103 is the line that casts the input object to a Photo object.

BUILD SUCCESSFUL (total time: 1 second)

据我了解,当我尝试将对象(通过 readObject 方法接收)类型转换为“照片”类对象时,会发生错误。至少,这就是第 103 行的错误所指的内容。

我在其他地方读到该错误意味着我“尝试读取比实际存在的对象更多的对象”。但不确定这意味着什么,因为我只想它读取 1 个图像(应该位于对象内)并返回其位置。

我还读到 ObjectInputStream 永远不会返回 null,除非我在某个地方给出了该值。但它实际上返回(?)“null”,即使我的代码不包含 null 值...

我已经做了好几天了(是的,我就是那么糟糕),但仍然没有运气。

最佳答案

您读了两遍:

    in.readObject();

photo = (Photo)in.readObject();

删除第一行。您也不必创建该文件。输出流将为您完成此操作。

关于java - ObjectInputStream.readObject() 给出 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15753156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com