2016-08-05 277 views
1

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

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)的问题是,我必须做出10个呼叫S3。

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

回答

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) 
+0

我有十个空目录。我只想立即将它们上传到S3 – Newbie

+0

MultipleFileUpload方法应该可以工作,尽管我从来没有使用它。对于includeSubdirectories参数使用true。 – Brooks

+0

我实际上想在S3中创建多个空目录。我不想从本地存储上传它们 – Newbie