【问题标题】:Get list of files in Cloud Storage (Java)获取 Cloud Storage (Java) 中的文件列表
【发布时间】:2012-11-16 13:58:49
【问题描述】:

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

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

【问题讨论】:

    标签: java google-app-engine google-cloud-storage


    【解决方案1】:

    您也可以使用 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());
    ...
    

    【讨论】:

      【解决方案2】:

      您可以通过其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,这将允许存储桶归您的应用程序所有,而不是归用户所有。

      【讨论】:

      • 非常感谢杰森。我以为我可以在没有其他库的情况下使用这样的功能 :( 。但没关系,也许他们稍后会集成这些功能。
      猜你喜欢
      • 2014-08-30
      • 2018-09-16
      • 2019-12-27
      • 2013-08-22
      • 2015-03-29
      • 2016-09-17
      相关资源
      最近更新 更多