我正在使用Java EWS API (EWS - Exchange Web服务)从Exchange服务器获取电子邮件,并将其存储在专有CMS中。我收到消息的类型是microsoft.exchange.webservices.data.EmailMessage - EWS API提供的一个类。CMS要求将ByteArrayOutputStream对象作为其方法的参数。
所以我想把EmailMessage对象转换成ByteArrayOutputStream。我看到了this thread,并尝试了类似的方法:(下面的item是EmailMessage类型)
ByteArrayOutputStream b = new ByteArrayOutputStream();
try
{
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject((Object)item);
}
catch(IOException ioe)
{
ioe.printStackTrace();
}但我得到了
java.io.NotSerializableException: microsoft.exchange.webservices.data.EmailMessage
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)我可以使用FileOutputStream将这些EmailMessage对象保存为.eml格式,但是现在我无法找到将它们转换为ByteArrayOutputStream的方法。那么有没有什么方法可以把FileOutputStream转换成ByteArrayOutputStream,或者直接从EmailMessage转换成ByteArrayOutputStream呢?
发布于 2013-10-31 19:06:43
因为你的(Object)item的类没有实现Serializable接口,所以你会得到这个异常。
对于OutputStream的问题和不应序列化的类,将引发
异常。所有异常对处于不确定状态的OutputStream都是致命的,由调用方决定是否忽略或恢复流状态。
https://stackoverflow.com/questions/19704462
复制相似问题