是否可以直接下载S3object
到Java
内存中并在我完成任务后将其删除?
问问题
30304 次
4 回答
54
使用AWS SDK for Java和Apache 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());
不确定“将其删除”是什么意思,但IOUtils
在将对象转换为字节数组后会关闭对象的输入流。如果您的意思是要从 s3 中删除该对象,那很简单:
s3.deleteObject("bucket", "key");
于 2012-11-01T19:52:20.853 回答
4
从 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()
于 2020-05-21T16:53:26.130 回答
1
例如,将文件数据转换为字符串:
S3Object s3object = s3.getObject(new GetObjectRequest(bucketName, key));
S3ObjectInputStream inputStream = s3object.getObjectContent();
StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
于 2020-02-17T08:05:16.820 回答
0
这是最好的做法。
S3Object object = s3.getObject("bucket", "key");
byte[] byteArray = IOUtils.toByteArray(object.getObjectContent());
于 2021-04-21T23:42:44.760 回答