是否有办法找出从ByteArrayInputStream返回的字节类型?

时间:2019-04-26 01:03:40

标签: java

我只是想弄清楚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;

2 个答案:

答案 0 :(得分:0)

您的意思是序列化了byte []对象,或者您的意思是流中有原始字节?对象流以aced0005开头,原始字节不会。

答案 1 :(得分:0)

事实证明,解决方案是为这两种情况创建一个序列化对象。在Java语言规范中,似乎并不能实现我想要的功能。从长远来看,这是正确的方法。