我正在尝试使用 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/