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();

原文由 user375566 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

代替 Reader OutputStream InputStream Writer

 InputStream reader = new BufferedInputStream(
   object.getObjectContent());
File file = new File("localFilename");
OutputStream writer = new BufferedOutputStream(new FileOutputStream(file));

int read = -1;

while ( ( read = reader.read() ) != -1 ) {
    writer.write(read);
}

writer.flush();
writer.close();
reader.close();

原文由 Maurício Linhares 发布,翻译遵循 CC BY-SA 4.0 许可协议

虽然 Mauricio 的答案中编写的代码可以工作——而且他关于流的观点当然是正确的——亚马逊提供了一种更快的方法来将文件保存在他们的 SDK 中。我不知道它在 2011 年是否不可用,但现在可用。

 AmazonS3Client s3Client = new AmazonS3Client(myCredentials);

File localFile = new File("localFilename");

ObjectMetadata object = s3Client.getObject(new GetObjectRequest("bucket", "s3FileName"), localFile);

原文由 Eyal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题