Amazon S3 annonce "répertoires"
J'ai créé une hiérarchie dans S3 via AWS S3 Console de Gestion. Si j'exécute le code suivant à la liste de seau:
AmazonS3 s3 = new AmazonS3Client(CRED);
ListObjectsRequest lor = new ListObjectsRequest()
.withBucketName("myBucket")
.withPrefix("code/");
ObjectListing objectListing = s3.listObjects(lor);
for (S3ObjectSummary summary: objectListing.getObjectSummaries()) {
System.out.println(summary.getKey());
}
J'obtiens:
code/
code/03000000-0001-0000-0000-000000000000/
code/03000000-0001-0000-0000-000000000000/special.js
code/03000000-0001-0000-0000-000000000000/test.js
code/03000000-0002-0000-0000-000000000000/
Qui est exactement ce à quoi je m'attends. Si j'ajoute un séparateur bien que, de sorte que je ne liste le contenu directement sous le code de "/" maintenant, je n'obtenez pas de sous "répertoires" de retour.
Modifier la ligne ci-dessus (ajouter withDelimiter() sur la fin):
ListObjectsRequest lor = new ListObjectsRequest().withBucketName("myBucket")
.withPrefix("code/")
.withDelimiter("/");
Et maintenant, je seulement obtenir:
code/
Je sais que le S3 n'a pas de "répertoires", au lieu délimité par des touches, mais ce comportement me semble bizarre? Comment aurais-je de la liste de ce qui est juste en dessous de "code"?
source d'informationauteur Kong
Vous devez vous connecter pour publier un commentaire.
Où vous avez les touches qui n'ont pas de contenu S3 considère comme "Commun " Préfixes":
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/ObjectListing.html#getCommonPrefixes%28%29