gpt4 book ai didi

java - 内部类的IO

转载 作者:行者123 更新时间:2023-11-29 04:03:51 24 4
gpt4 key购买 nike

是否可以将 ObjectOutputStream/ObjectInputStream 设为内部类?我可以编写它并检查创建的文件,但是当我尝试使用 ObjectInputStream 读回它时,我得到一个 EOFException 只是试图读取一个 Object o = oos.readObject();

  1. 我使用同一个文件对象打开两个流,所以这不是问题所在。
  2. 它似乎独立于内部类的性质 - 仅具有 public int 的类与更复杂的类一样会失败。

我必须继续前进,创建一个常规类,并在发件人类中实例化,但我不想走开,不知道是否可行,如果不可能,为什么不。

更新:导致问题的相关问题:

一个。您不能重新打开使用 ObjectOutputStream 编写的文件并附加:第二个 header 已写入并损坏了文件。

B.使用 ByteOutputStream 序列化一个 HashMap 来做一个哈希摘要是行不通的,因为当你从 ObjectOutputStream 文件中读回 HashMap 时,你很可能从 ByteOutputStream 得到一个不同的 byte[],因为对顺序的变化:内容是相同,但 byte[](以及哈希摘要)不是。

希望这可以帮助人们节省一些时间。

最佳答案

这个对我有用。请查找与您的解决方案有何不同之处。

public class Example implements Serializable {    public static void main(String[] args) throws IOException, ClassNotFoundException {        new Example().run();    }    private void run() throws IOException, ClassNotFoundException {        Inner inner = new Inner();        inner.x = 5;        ByteArrayOutputStream out = new ByteArrayOutputStream();        ObjectOutputStream outputStream = new ObjectOutputStream( out );        outputStream.writeObject( inner );        ByteArrayInputStream in = new ByteArrayInputStream( out.toByteArray() );        ObjectInputStream inputStream = new ObjectInputStream( in );        Inner inner2 = (Inner) inputStream.readObject();        System.out.println( inner2.x );    }    class Inner implements Serializable {        int x;    }}

关于java - 内部类的IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1609556/

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