Мне нужно перечислить все файлы, содержащиеся в определенной папке, содержащейся в моем ведре 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>/
Почему я получаю такое поведение? Какая разница между двумя запросами на листинг? Мне нужно указать только файлы в каталоге, исключая подкаталоги.