java - 使用带分页的 java 在 GCS 中列出 Blob 不断获得相同的 blob 页

标签 java google-cloud-platform google-cloud-storage

我正在尝试使用 Java API 列出大量 gcs blob。由于 blob 的数量很大,我尝试使用分页,但我重复获得相同的页面。代码如下所示:

Storage storage = StorageOptions.newBuilder().setCredentials(credentials).build().getService();

Page<Blob> allBlobs = storage.list(myBucketName,Storage.BlobListOption.pageSize(5000), Storage.BlobListOption.prefix("some prefix");

while (allBlobs.hasNextPage()) {
   Page<Blob> page = allBlobs.getNextPage();
   for (Blob blob : page.getValues()) {
     .... do something....
   }

}

看起来我一遍又一遍地访问相同的页面。我通过 allBlobs.getNextPageToken() 查看了 token , token 看起来一直都一样。我是否错过了将页面向前移动到下一页的内容? getNextPage 不是在做吗? Page 接口(interface)只定义了几个方法。我是不是忽略了什么?

最佳答案

改用iterateAll 方法。参见示例 here (复制到这里完成):

Page<Blob> blobs =
    storage.list(
        bucketName, BlobListOption.currentDirectory(),
        BlobListOption.prefix(directory));

for (Blob blob : blobs.iterateAll()) {
  // do something with the blob
}

关于java - 使用带分页的 java 在 GCS 中列出 Blob 不断获得相同的 blob 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594343/

相关文章:

docker - 将 Google 服务帐户凭据传递给 Docker

java - 初始化 PDFont (Apache PDFBox) 时抛出 DamagedFontException

java - 将类类型作为参数传递

python - 带参数将数据插入Spanner

google-cloud-storage - 无法使用 gsutil 将文件上传到 GCS

javascript - 从 Google Cloud Functions (JS) 中运行 Google Storage 命令

java - JVM - CPU 使用率达到 100%

java - JAR文件的正确内部结构是什么

Kubernetes Ingress - 如何将所有非 www 流量重写到 www 子域?

google-cloud-platform - 来自浏览器的 Google Speech API