下载 AWS S3 Java SDK 的文件帮助
下面的代码仅适用于从 S3 中的存储桶下载文本文件。这不适用于图像。是否有更简单的方法来使用 AWS 开发工具包管理下载/类型?文档中包含的示例并未使其显而易见。
AWSCredentials myCredentials = new BasicAWSCredentials(
String.valueOf(Constants.act), String.valueOf(Constants.sk));
AmazonS3Client s3Client = new AmazonS3Client(myCredentials);
S3Object object = s3Client.getObject(new GetObjectRequest("bucket", "file"));
BufferedReader reader = new BufferedReader(new InputStreamReader(
object.getObjectContent()));
File file = new File("localFilename");
Writer writer = new OutputStreamWriter(new FileOutputStream(file));
while (true) {
String line = reader.readLine();
if (line == null)
break;
writer.write(line + "\n");
}
writer.close();
The code below only works for downloading text files from a bucket in S3. This does not work for an image. Is there an easier way to manage downloads/types using the AWS SDK? The example included in the documentation does not make it apparent.
AWSCredentials myCredentials = new BasicAWSCredentials(
String.valueOf(Constants.act), String.valueOf(Constants.sk));
AmazonS3Client s3Client = new AmazonS3Client(myCredentials);
S3Object object = s3Client.getObject(new GetObjectRequest("bucket", "file"));
BufferedReader reader = new BufferedReader(new InputStreamReader(
object.getObjectContent()));
File file = new File("localFilename");
Writer writer = new OutputStreamWriter(new FileOutputStream(file));
while (true) {
String line = reader.readLine();
if (line == null)
break;
writer.write(line + "\n");
}
writer.close();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
尽管 Mauricio 的答案中编写的代码可以工作 - 并且他关于流的观点当然是正确的 - 亚马逊提供了一种更快的方法来将文件保存在其 SDK 中。我不知道2011年是否还没有,但现在可以了。
Though the code written in Mauricio's answer will work - and his point about streams is of course correct - Amazon offers a quicker way to save files in their SDK. I don't know if it wasn't available in 2011 or not, but it is now.
您应该使用
InputStream
和OutputStream
类,而不是Reader
和Writer
类:Instead of
Reader
andWriter
classes you should be usingInputStream
andOutputStream
classes:埃亚尔斯的回答让你成功了一半,但还不是很清楚,所以我会澄清一下。
Eyals answer gets you half way there but its not all that clear so I will clarify.
还有更简单的方法可以实现这一点。我使用了下面的代码片段。从 http://docs.ceph.com/docs/mimic/ 获取参考radosgw/s3/java/
There is even much simpler way to get this. I used below snippet. Got reference from http://docs.ceph.com/docs/mimic/radosgw/s3/java/
使用
java.nio.file.Files
将S3Object
复制到本地文件。Use
java.nio.file.Files
to copyS3Object
to local file.依赖 AWS S3 存储桶
从 S3 存储桶下载对象并存储在本地存储中。
从 S3 存储桶获取对象列表
检查是否有对象桶中是否存在
Dependencies AWS S3 bucket
Download object from S3 bucket and store in local storage.
Get List of Object from S3 Bucket
Check if any object exists in bucket or not