2016-11-30 3 views
0

のサブディレクトリの一覧を表示するために、私はアマゾンキー構造を次ていますAmzon S3のJava APIは、ベースディレクトリ

as3/basedir/dir-1/file-1.txt 
as3/basedir/dir-2/file-2.txt 
as3/basedir/dir-3/file-3.txt 
as3/basedir/dir-4/file-4.txt 
as3/basedir/dir-5/file-5.txt 
as3/basedir/dir-6/dir-6-1/file-6.txt 
as3/basedir/dir-7/dir-7-1/file-7.txt 
as3/basedir/dir-8/dir-8-1/file-8.txt 
as3/basedir/dir-9/dir-9-1/file-9.txt 
as3/basedir/dir-10/dir-10-1/file-10.txt 

は、リスト、すなわちサブディレクトリ名として出力を取得します。

=> 1.リクエストキー接頭辞= /as3/basedir/

Output List: [dir-1,dir-2,dir-3,dir-4,dir-5] 

=> 2.要求キー接頭辞= /as3/basedir/dir-6/

Output List: [dir-6-1] 

答えて

0

Javaメソッドに続いIMPLは、私のような問題を解決:

/** 
    * Listing just the sub dirs in an s3 bucket 
    * @param prefix 
    * @param limit 
    * @return list of subdirs 
    */ 
    public List<String> getSubDirInAS3(String prefix,Integer limit) { 
     final String DELIMITER ="/"; 
     if (!prefix.endsWith(DELIMITER)) { 
      prefix += DELIMITER; 
     } 
     List<String> paths = new ArrayList<String>(); 
     ListObjectsRequest listObjectsRequest = new ListObjectsRequest() 
       .withBucketName(config.getBucketName()).withPrefix(prefix) 
       .withMaxKeys(limit).withDelimiter(DELIMITER); 
     ObjectListing currentListing = client.listObjects(listObjectsRequest); 

     while (currentListing == null || currentListing.isTruncated()) { 
      currentListing = client.listNextBatchOfObjects(currentListing); 
      paths.addAll(currentListing.getCommonPrefixes()); 
      //currentListing.setMarker(currentListing.getNextMarker()); 
     } 
     return paths; 
    } 
関連する問題