我只是想弄清楚ByteArrayInputStream
中的字节类型。在一种情况下,我存储了byte[]
,在另一种情况下,我存储了Hashmap
。以下代码仅在ObjectInputStream
的情况下在byte[]
中失败,而在其Hashmap
时成功。有没有办法找出从ByteArrayInputStream
返回的字节类型?
Object object = null;
try {
final ByteArrayInputStream byteIn = new ByteArrayInputStream(bytes);
final ObjectInputStream in = new ObjectInputStream(byteIn);
object = in.readObject();
in.close();
byteIn.close();
} catch (ClassNotFoundException | IOException e) {
// Sadly, when ByteArrayInpuStream is instantiated I can not detect whether its an object of bytes or just bytes
// If anyone know of a better way?
if(!e.getMessage().contains("invalid stream header")) {
Logger.error(logStringFormatter(DFLT_WIDTH, "Exception", e.getMessage()));
}
}
return object;
答案 0 :(得分:0)
您的意思是序列化了byte []对象,或者您的意思是流中有原始字节?对象流以aced0005开头,原始字节不会。
答案 1 :(得分:0)
事实证明,解决方案是为这两种情况创建一个序列化对象。在Java语言规范中,似乎并不能实现我想要的功能。从长远来看,这是正确的方法。