我正在尝试使用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可以列出存储桶中的文件夹吗?
答案 0 :(得分:-1)
在API参考Delimiter中描述如下:
用于列出&#34;目录模式&#34;。
只返回名称(除前缀外)不包含分隔符的对象。
基本上你必须将Delimiter设置为空
var opt = new ListObjectsOptions() { Delimiter = "" };
否则会忽略存储桶中的每个文件夹。只需将Delimiter设置为空,其余代码即可运行。