Как проверить, существует ли папка в облачном хранилище Google с помощью Java? - PullRequest
1 голос
/ 07 апреля 2020

У меня возникла проблема при попытке определить, существует ли «папка / папка» в облачном хранилище Google.

Я знаю, что технически нет понятия «папка» или «папка», но мне нужно проверьте, существует ли определенный префикс.

Вот способ, которым я определяю, существует ли BLOB-объект, который работает нормально:

public boolean doesFileExist(String bucket, String prefix) {
    Blob blob = storage.get(bucket, prefix);
    return blob != null;
}

Это, кажется, работает при использовании фактического имени файла с расширением , Однако использование этого для чего-то вроде folder/ не работает.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

Вы можете использовать API Cloud Storage List для запроса всех файлов с общим префиксом. Если вы обнаружите какие-либо файлы вообще, значит, они существуют. Вы захотите использовать метод list () и передать набор BlobListOption , который задает префикс, и, возможно, всего лишь размер страницы 1 для эффективности.

0 голосов
/ 08 апреля 2020

Спасибо @DougStevenson за предложение! Я смог заставить его работать с этим:

public boolean doesFileExist(String bucket, String prefix) {
    Page<Blob> blobs = storage.list(bucket, BlobListOption.prefix(prefix), BlobListOption.pageSize(1));
    return blobs.getValues().iterator().hasNext();
}
...