将.msg附件另存为java

时间:2019-01-13 19:26:28

标签: java file serialization outlook attachment

我正在使用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中的每个属性还是有更简单的方法?

还有没有更好的方法来解决主要问题?

感谢阅读,非常感谢您的帮助。

0 个答案:

没有答案