我需要列出包含在我的 S3桶中的某个文件夹中的所有文件。
文件夹结构如下
/my-bucket/users/<user-id>/contacts/<contact-id>
我有与用户相关的文件和与某个用户联系人相关的文件。 两个我都要列出来。
要列出文件,我使用以下代码:
ListObjectsRequest listObjectsRequest = new ListObjectsRequest().withBucketName("my-bucket")
.withPrefix("some-prefix").withDelimiter("/");
ObjectListing objects = transferManager.getAmazonS3Client().listObjects(listObjectsRequest);
为了列出某个用户的文件,我使用了这个前缀:
users/<user-id>/
而且我正确地获取了除 contacts
子目录以外的所有目录中的文件,例如:
users/<user-id>/file1.txt
users/<user-id>/file2.txt
users/<user-id>/file3.txt
为了列出某个用户联系人的文件,我使用了以下前缀:
users/<user-id>/contacts/<contact-id>/
但在这种情况下,我也得到了 目录本身作为返回的对象:
users/<user-id>/contacts/<contact-id>/file1.txt
users/<user-id>/contacts/<contact-id>/file2.txt
users/<user-id>/contacts/<contact-id>/
为什么我会有这种行为?这两个列表请求之间有什么不同?我只需要列出目录中的文件,不包括子目录。