我正在阅读javax.mail的电子邮件附件 我希望能够将附件从一个类传递到另一个类 我正在阅读附件 part.getInputStream();
和其他类使用输入流作为输入
我正在辩论应该创建
AttachmentClass
inputStream
或
AttachmentClass
byte[]
我知道传递InputStream可能会导致泄漏并指向其他对象而不是你的对象,而字节数组将是实际的对象。
第一个选项非常简单:
AttachmentClass.setAttachment( part.getInputStream())
NextClass.doSomething(AttachmentClass)
NextClass.doSomething(AttachmentClass)
第二个选项需要多次从InputStream转换为byte,反之亦然
AttachmentClass.setAttachment(convertToByte(part.getInputStream()))
NextClass.doSomething(ConvertToInputStream(AttachmentClass))
NextClass.doSomething(ConvertToInputStream(AttachmentClass))
传递InputStream的正确方法是什么?
答案 0 :(得分:1)
只要您记得关闭InputStream
中的NextClass
,第一个选项就可以了。当您将InputStream
对象转换为byte
数组时,第二个选项中的转换没有实际意义,只是在从第二个类调用它时将其转换回InputStream
。如果您可以在byte
中以NextClass
数组形式处理附件,那么第二个选项是值得的。