使用java在Amazon S3中创建多个空目录

时间:2016-08-05 00:26:16

标签: java amazon-web-services amazon-s3

我是S3的新手,我试图通过只调用一次来使用java在Amazon S3中创建多个目录。 我只想出这个: -

ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentLength(0);

InputStream emptyContent = new ByteArrayInputStream(new byte[0]);

PutObjectRequest putObjectRequest = new PutObjectRequest(bucket,
      "test/tryAgain/", emptyContent, metadata);

s3.putObject(putObjectRequest);

但是上传10个文件夹(when the key ends with "/" in the console we can see the object as a folder)时出现这个问题的原因是我必须对S3进行10次调用。

但我想一次创建所有文件夹,就像我们使用DeleteObjectsRequest进行批量删除一样。 任何人都可以建议我或帮助我如何解决我的问题?

1 个答案:

答案 0 :(得分:0)

您能否更具体地了解您尝试做什么(或避免做什么)?

如果您主要关注每个PUT的费用,我认为没有办法批量上传'一个目录,每个文件都是一个单独的密钥,并避免这种成本。每个PUT(即使是批处理过程)也会花费你每PUT的价格。

如果您只是想找到一种有效且递归上传文件夹的方法,请查看TransferManager的uploadDirectory()方法。

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html#uploadDirectory-java.lang.String-java.lang.String-java.io.File-boolean-

public MultipleFileUpload uploadDirectory(String bucketName,
                                      String virtualDirectoryKeyPrefix,
                                      File directory,
                                      boolean includeSubdirectories)