2017-02-11 11 views
0

オブジェクト:AWS S3のJava SDKのリストには、私はそうのような構造を持っている

common/test/v20170522/part-0001.snappy 
common/test/v20170522/part-0002.snappy 
common/test/v20170522/part-0003.snappy 
common/test/v20170522/part-0004.snappy 
common/test/v20170622/part-0001.snappy 
common/test/v20170622/part-0002.snappy 
common/test/v20170622/part-0003.snappy 
common/test/v20170622/part-0004.snappy 

その中の多くのファイルとの多くのバージョンのフォルダがあります。私は基本的にtest/commonフォルダのすべてのフォルダのリストを望んでいます:だからv20170522, v20170622, etc

ListObjectsRequest listObjectsRequest = new ListObjectsRequest(); 
listObjectsRequest.setBucketName("common"); 
listObjectsRequest.setPrefix("test/"); 
listObjectsRequest.setDelimiter("/"); 

これは私にはちょうどcommon/testフォルダ内にあるファイルやフォルダではないが返されます。ここでは

は、私がこれまで持っているものです。デリミタを削除すると、すべてのフォルダのすべてのサブファイルが取得されます。これを行う方法はありますか?

+1

getCommonPrefixes()? – jarmod

+0

うん、それだった!ありがとう! –

+0

よかった、うれしかった。もう少し詳細な文脈で答えを加えました。 – jarmod

答えて

2

S3は通常のファイルシステムではなく、リスト操作が期待どおりに動作することが重要です。

listObjectsを起動すると、指定した:に共通のプレフィックスを共有するすべてのキーをロールアップするlistObjectsが発生し、指定された接頭辞

  • delimiterで始まるキーのみに結果を制限し

    • prefix単一サマリーリスト結果

    「フォルダ」は、返される共通プレフィックスにあります。getCommonPrefixes()からアクセスできます。

    詳細については、Listing Keys using Prefix and Delimiterを参照してください。

  • 関連する問題