Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将对象与字节数组一起序列化到文件中?_Java_Serialization_Objectoutputstream_Bytearrayoutputstream - Fatal编程技术网

Java 如何将对象与字节数组一起序列化到文件中?

Java 如何将对象与字节数组一起序列化到文件中?,java,serialization,objectoutputstream,bytearrayoutputstream,Java,Serialization,Objectoutputstream,Bytearrayoutputstream,我有一个java类,它包含一个内部类和一个字节数组成员,例如KeyValPair hdr和byte[]content,我只想序列化内部类hdr和字节数组content,而不是整个类实例,因为类中还有一些其他不必要的字段 我知道如何使用ObjectOutputStream序列化对象,我知道如何将对象转换为字节数组,但我不确定是否可以在不将内部类实例KeyValPair hdr转换为字节数组的情况下同时存储它们。如果我将其转换为字节数组并与内容一起存储,那么在从文件中反序列化它时,我如何知道hdr的

我有一个java类,它包含一个内部类和一个字节数组成员,例如
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()
的结果。它不是内容。很抱歉延迟,我确实忘记了。似乎创建新的字符串实例可以解决问题。