Google Cloud Storage - ListObjects,文件夹未显示。

时间:2018-02-03 06:20:01

标签: c# google-cloud-storage

我正在尝试使用Google云端存储,但其C#SDK存在问题。具体来说,我创建了一个包含文件夹a /,b /,c /(文件夹中的文件)的存储桶。当我使用时:

gsutil ls gs://<mybucket>/root/

文件夹正确显示为:

gs://<mybucket>/root/a
gs://<mybucket>/root/b
gs://<mybucket>/root/c

但是,当我使用C#SDK列出文件夹时,

var client = StorageClient.Create();
var opt = new ListObjectsOptions() { Delimiter = "/" };
var ret = client.ListObjects("<mybucket>", "root/", opt);
var lst = new List<Google.Apis.Storage.v1.Data.Object>(); 
foreach (var item in ret )
{
    lst.Add(item);
}

结果列表为空(未返回任何文件夹)。请注意,如果我将上面的代码更改为:

var opt = new ListObjectsOptions();

可以成功列出文件夹中的所有文件。怎么了?带有分隔符选项的ListObjects可以列出存储桶中的文件夹吗?

1 个答案:

答案 0 :(得分:-1)

在API参考Delimiter中描述如下:

  

用于列出&#34;目录模式&#34;。

只返回名称(除前缀外)不包含分隔符的对象。

基本上你必须将Delimiter设置为空

var opt = new ListObjectsOptions() { Delimiter = "" };

否则会忽略存储桶中的每个文件夹。只需将Delimiter设置为空,其余代码即可运行。