传递输入流?
Passing input stream around?
我正在使用 javax.mail
阅读电子邮件附件
我希望能够将附件从一个 class 传递到另一个
我正在阅读附件
part.getInputStream();
和其他 classes 使用输入流作为输入
我正在辩论是否应该创建
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 的正确方法是什么?
第一个选项可以,只要记得关闭NextClass
中的InputStream
即可。当您将 InputStream
对象转换为 byte
数组时,第二个选项中的转换没有实际意义,只是在从第二个 class 调用它时将其转换回 InputStream
。如果您可以在 NextClass
中以 byte
数组形式处理附件,那么第二个选项是值得的。
我正在使用 javax.mail
阅读电子邮件附件
我希望能够将附件从一个 class 传递到另一个
我正在阅读附件
part.getInputStream();
和其他 classes 使用输入流作为输入
我正在辩论是否应该创建
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 的正确方法是什么?
第一个选项可以,只要记得关闭NextClass
中的InputStream
即可。当您将 InputStream
对象转换为 byte
数组时,第二个选项中的转换没有实际意义,只是在从第二个 class 调用它时将其转换回 InputStream
。如果您可以在 NextClass
中以 byte
数组形式处理附件,那么第二个选项是值得的。