Как получить информацию о точном файле из S3, используя ListVersionsRequest, JAVA? - PullRequest
0 голосов
/ 09 марта 2020

У меня S3 bucket с именем 'groceries' и несколькими файлами внутри папки fruits. Имя файла будет выглядеть следующим образом: ('APPLE_1','APPLE_11','APPLE_1112','APPLE_3','APPLE_6')

Я, в основном, хочу file_name и его идентификаторы версии для данного сегмента и ключа. Когда я запускаю приведенный ниже код, он также выбирает другие подобные файлы, такие как (APPLE_11, APPLE_1112). Какие изменения я должен внести в приведенный ниже код для фильтрации только (APPLE_1)?

ListVersionsRequest request = new ListVersionsRequest();
request.withBucketName("groceries");
request.setPrefix("fruits/APPLE_1");
request.withMaxResults(20);
VersionListing versionListing = s3Client.listVersions(request);

int numVersions = 0, numPages = 0;
while (true) {
    numPages++;
    for (S3VersionSummary objectSummary:
        versionListing.getVersionSummaries()) {
        System.out.printf("Retrieved object %s, version %s\n",
            objectSummary.getKey(),
            objectSummary.getVersionId());
        numVersions++;
    }

    if (versionListing.isTruncated()) {
        versionListing = s3Client.listNextBatchOfVersions(versionListing);
    } else {
        break;
    }
current output
Retrieved object fruits/APPLE_1, version LFrP3YxiZu9S0
Retrieved object fruits/APPLE_11, version bHcs6Oh1leiPPvUB6NI07P0GB6
Retrieved object fruits/APPLE_1112, version Q9FD7fmVq_t1L3GPFitf
expected output
Retrieved object fruits/APPLE_1, version LFrP3YxiZu9S0

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете поместить условие if внутри для l oop. Например

for (S3VersionSummary objectSummary:
    versionListing.getVersionSummaries()) {
    if ( objectSummary.getKey().isEqual("fruits/APPLE_1"){// Or any other condition based on your requirement
        System.out.printf("Retrieved object %s, version    %s\n",
        objectSummary.getKey(),
        objectSummary.getVersionId());
    }
    numVersions++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...