我正在使用msgparser 1.1.15 API。
解析.msg时,我得到一个.msg作为附件。我想将此.msg附件另存为文件,但MsgAttachment对象没有一种方法可以将数据作为byte []送回。
因此,我正在尝试将对象转换为字节数组输出流,然后尝试写入文件。即使这样,MsgAttachment仍会返回未实现Serializable接口的Message对象,这会导致NotSerializableException。
我得到如下所示的.msg附件(伪代码):
if(attachment instanceof MsgAttachment){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
MsgAttachment msgAttachment = (MsgAttachment) attachment;
Message message = msgAttachment.getMessage();
oos.writeObject(message);
oos.flush();
oos.close();
InputStream in = new ByteArrayInputStream(baos.toByteArray());
}
我在NotSerializableException
这行得到oos.writeObject(message);
,因为com.auxilii.msgparser.Message没有实现Serializable接口,并且由于它是一个库类而无法更改。
我进行了研究,发现此选项可以尝试解决。 “创建一个包装类,扩展Message并实现Serializable,然后自行实现writeObject(...)和readObject(...)。”
问题是,我该如何在writeObject和readObject方法中实现?我应该序列化对象Message中的每个属性还是有更简单的方法?
还有没有更好的方法来解决主要问题?
感谢阅读,非常感谢您的帮助。