18

次のようなs3構造があります。

s3bucketname -> List of first level keys -> List of second level keys -> List of third level keys -> Actual file.

私がしなければならないことは、s3bucket の名前と第 1 レベルのキーのエントリが与えられた場合、第 1 レベルのキーの下にあるすべての第 2 レベルのキーの名前が必要になることです。したがって、本質的にフォルダーのように見ると、 の名前とそのサブフォルダーの 1 つの名前root folderが与えられ、内に存在するすべてのフォルダーを一覧表示したいと思います。ただし、完全なパスではなく、名前だけです。s3bucketnamesubfolder1subfolder1

アマゾンのJava SDKを使用してJavaでそれを行う方法を誰かが指摘できますか?

ありがとう

4

2 に答える 2

49

正常に動作するように見える次のコードを実行しました。 a を渡し、プレフィックスが/prefixで終わることを確認し、サブディレクトリのリストを取得する区切り文字も指定する必要があります。以下が機能するはずです。

public List<String> listKeysInDirectory(String bucketName, String prefix) {
    String delimiter = "/";
    if (!prefix.endsWith(delimiter)) {
        prefix += delimiter;
    }

    ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
            .withBucketName(bucketName).withPrefix(prefix)
            .withDelimiter(delimiter);
    ObjectListing objects = _client.listObjects(listObjectsRequest);
    return objects.getCommonPrefixes();
}
于 2013-02-01T19:54:07.453 に答える