如何在java中将s3对象直接下载到内存中

Man*_*ha 16 task amazon-s3

是否有可能下载S3objectJava直接到内存中,彻底排除当我和任务做了什么?

Zac*_*ave 33

使用AWS SDK for JavaApache Commons IO:

//import org.apache.commons.io.IOUtils

AmazonS3 s3  = new AmazonS3Client(credentials);  // anonymous credentials are possible if this isn't your bucket
S3Object object = s3.getObject("bucket", "key"); 
byte[] byteArray = IOUtils.toByteArray(object.getObjectContent());
Run Code Online (Sandbox Code Playgroud)

不知道"删除它"是什么意思,但是IOUtils当它完成将对象的输入流转换为字节数组时将关闭该对象的输入流.如果您的意思是想从s3中删除对象,那就像以下一样简单:

s3.deleteObject("bucket", "key"); 
Run Code Online (Sandbox Code Playgroud)

  • 现在,您无需使用“ org.apache.commons.io”即可执行此操作。AWS开发工具包在自己的IOUtils中附带了此方法:`import com.amazonaws.util.IOUtils;`。 (4认同)

tog*_*ise 7

从 AWS JAVA SDK 2 开始,您可以使用它将ReponseTransformer响应转换为不同类型。(参见javadoc)。

下面是获取字节对象的示例

GetObjectRequest request = GetObjectRequest.builder().bucket(bucket).key(key).build()
ResponseBytes<GetObjectResponse> result = bytess3Client.getObject(request, ResponseTransformer.toBytes())

// to get the bytes
result.asByteArray()
Run Code Online (Sandbox Code Playgroud)