我正在使用javax.mail阅读电子邮件附件
我希望能够将附件从一个班级传递到另一个班级
我正在阅读附件
               part.getInputStream();

其他类使用Input流作为输入
我在辩论应该创造

AttachmentClass
    inputStream


要么

AttachmentClass
    byte[]


我知道传递InputStream可能会导致泄漏并指向其他对象而不是您的对象,而字节数组将是实际对象。

第一种选择将非常简单:

AttachmentClass.setAttachment( part.getInputStream())
NextClass.doSomething(AttachmentClass)
NextClass.doSomething(AttachmentClass)


第二个选项将需要多次从InputStream转换为字节,反之亦然

AttachmentClass.setAttachment(convertToByte(part.getInputStream()))
NextClass.doSomething(ConvertToInputStream(AttachmentClass))
NextClass.doSomething(ConvertToInputStream(AttachmentClass))


传递InputStream的正确方法是什么?

最佳答案

只要您记得关闭InputStream中的NextClass,第一个选项就可以。当您将InputStream对象转换为byte数组时,第二个选项中的转换毫无意义,只是在从第二个类调用它时才将其转换回InputStream。如果您可以在byte中以其NextClass数组形式处理附件,那么第二个选择是值得的。

09-25 21:02