【发布时间】:2012-11-16 13:58:49
【问题描述】:
是否有可能使用 GAE SDK 列出我的 Google Cloud Storage 存储桶中的所有文件?我知道Python SDK支持这样的功能,但是我在Java SDK中找不到类似的功能。
如果不可用,是否会在 Java SDK 的未来版本中添加?
【问题讨论】:
标签: java google-app-engine google-cloud-storage
是否有可能使用 GAE SDK 列出我的 Google Cloud Storage 存储桶中的所有文件?我知道Python SDK支持这样的功能,但是我在Java SDK中找不到类似的功能。
如果不可用,是否会在 Java SDK 的未来版本中添加?
【问题讨论】:
标签: java google-app-engine google-cloud-storage
您也可以使用 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());
...
【讨论】:
您可以通过其client library 使用 Cloud Storage JSON API。设置凭据后,您可以像这样拨打电话:
Storage storage = new Storage(httpTransport, jsonFactory, credential);
ObjectsList list = storage.objects().list("bucket-name").execute();
for (Object obj : list.getItems()) {
//...
}
在这种情况下,您可能还想使用 AppIdentityCredential,这将允许存储桶归您的应用程序所有,而不是归用户所有。
【讨论】: