Java 如何将对象与字节数组一起序列化到文件中?
我有一个java类,它包含一个内部类和一个字节数组成员,例如Java 如何将对象与字节数组一起序列化到文件中?,java,serialization,objectoutputstream,bytearrayoutputstream,Java,Serialization,Objectoutputstream,Bytearrayoutputstream,我有一个java类,它包含一个内部类和一个字节数组成员,例如KeyValPair hdr和byte[]content,我只想序列化内部类hdr和字节数组content,而不是整个类实例,因为类中还有一些其他不必要的字段 我知道如何使用ObjectOutputStream序列化对象,我知道如何将对象转换为字节数组,但我不确定是否可以在不将内部类实例KeyValPair hdr转换为字节数组的情况下同时存储它们。如果我将其转换为字节数组并与内容一起存储,那么在从文件中反序列化它时,我如何知道hdr的
KeyValPair hdr
和byte[]content
,我只想序列化内部类hdr
和字节数组content
,而不是整个类实例,因为类中还有一些其他不必要的字段
我知道如何使用ObjectOutputStream
序列化对象,我知道如何将对象转换为字节数组,但我不确定是否可以在不将内部类实例KeyValPair hdr
转换为字节数组的情况下同时存储它们。如果我将其转换为字节数组并与内容一起存储
,那么在从文件中反序列化它时,我如何知道hdr
的长度
另一个问题是,是否可以将MappedBytesBuffer
与ObjectOutputStream
或类似于ByteArrayOutputStream
的东西一起使用?因为我所处的场景需要一定的I/O性能级别,并且进程可能会被终止。。。那么,使用MappedBytesBuffer
是一个好主意吗
我是java新手,非常感谢您的帮助。只需使用
writeObject()
将字节数组序列化为对象,然后使用readObject()
反序列化即可。这将自动处理长度。谢谢,它现在可以运行了,但是readObject()
的内容似乎不正确。内部类的内容正确,但字节数组不正确。我用content=(byte[])ois.readObject()阅读它代码>结果就像这样的字符串[B@46c603e9
。遗漏了什么吗?是的,您遗漏了检查内容。您提到的字符串只是toString()
的结果。它不是内容。很抱歉延迟,我确实忘记了。似乎创建新的字符串实例可以解决问题。