Google Cloud BlobListOption выполняет только один уровень ниже currentDir - PullRequest
1 голос
/ 07 ноября 2019

Я тестировал некоторые функции облачного хранилища и только что увидел, что итеративный подход работает только с уровнем под текущим каталогом?

Page<Blob> blobs = STORAGE_INSTANCE.list(bucket, Storage.BlobListOption.currentDirectory(),
                Storage.BlobListOption.prefix(getBucketKey(GS_SCHEMA, prefix).concat(URI_DELIMITER)));

Учитывая, что то, что получает .prefix(), например,/dir/ и этот префикс содержит два вложенных уровня, таких как /dir/content/ и /dir/content/mycontent.txt.

Если этот вызов выполняется с ранее упомянутым /dir/, в списке отображается только /dir/content/, но префиксов больше нет.

Таким образом, всякий раз, когда я хочу перебрать все префиксы ниже /dir/, независимо от того, что я должен повторить /dir/content/, чтобы я мог видеть dir/content/mycontent.txt в списке.

IsЕсть простой способ исправить это или я не использую API должным образом?

1 Ответ

0 голосов
/ 14 ноября 2019

Удалите параметр Storage.BlobListOption.currentDirectory() из метода list(). В следующем фрагменте кода мне удалось отобразить все BLOB-объекты, содержащие для меня определенный префикс:

Page<Blob> blobs = storage.list(bucketName, BlobListOption.prefix(prefix));
for (Blob blob : blobs.iterateAll()) {
    System.out.println(blob);
}
...