2016-08-05 278 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