Eag*_*eak 9 java inputstream outputstream amazon-s3 amazon-web-services
我在内存中创建PDF文档作为OutputStreams.这些应该上传到S3.我的问题是,它无法创建一个PutObjectRequest从OutputStream(直接按这个线程在AWS开发论坛).我aws-java-sdk-s3在Dropwizard应用程序中使用v1.10.8 .
到目前为止我能看到的两个解决方法是:
OutputStream到a InputStream并接受使用两倍量的RAM.OutputStream到一个InputStream并接受额外线程的开销(参见这个答案)如果我找不到更好的解决方案,我会选择#1,因为在我的设置中,它看起来好像能够比线程/ CPU更容易买得起额外的内存.
到目前为止,我是否还有其他任何可能更有效的方式来实现这一目标?
编辑:
我OutputStreams为ByteArrayOutputStream小号
我通过子类化解决了这个问题ConvertibleOutputStream:
public class ConvertibleOutputStream extends ByteArrayOutputStream {
//Craetes InputStream without actually copying the buffer and using up mem for that.
public InputStream toInputStream(){
return new ByteArrayInputStream(buf, 0, count);
}
}
Run Code Online (Sandbox Code Playgroud)