10

是否有可能使用 GAE SDK 列出我的 Google Cloud Storage 存储桶中的所有文件?我知道 Python SDK 支持这样的功能,但是我在 Java SDK 中找不到类似的功能。

如果不可用,是否会在 Java SDK 的未来版本中添加?

4

2 回答 2

12

您也可以使用Google Java Client Library(它正在替换Google Cloud Storage API)来执行此操作

GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
AppIdentityService appIdentity = AppIdentityServiceFactory.getAppIdentityService();

ListResult result = gcsService.list(appIdentity.getDefaultGcsBucketName(), ListOptions.DEFAULT);
while (result.hasNext()){
    ListItem l = result.next();
    String name = l.getName();

    System.out.println("Name: " + name);
}

如果您只想遍历某个“目录”,请使用 ListOptions 构建器

ListOptions.Builder b = new ListOptions.Builder();
b.setRecursive(true);
b.setPrefix("directory");
...

ListResult result = gcsService.list(appIdentity.getDefaultGcsBucketName(), b.build());
...
于 2014-09-17T11:30:07.243 回答
5

您可以通过其客户端库使用 Cloud Storage JSON API 。设置凭据后,您可以像这样拨打电话:

Storage storage = new Storage(httpTransport, jsonFactory, credential);
ObjectsList list = storage.objects().list("bucket-name").execute();
for (Object obj : list.getItems()) {
  //...
}

在这种情况下,您可能还想使用 an AppIdentityCredential,这将允许存储桶由您的应用程序拥有,而不是由用户拥有。

于 2012-11-16T15:44:08.297 回答