列出bucket目录内的对象



几天前,我正在使用谷歌云存储列表和下载桶内的对象,但现在我正在努力只读特定目录内的对象,因为我只想迭代此目录内的对象。我的桶号是pubsite_prod_rev_12345但是我尝试在"/earnings/":

string bucketId = "pubsite_prod_rev_12345/earnings";

所以现在我向专家求助,这是我的代码:

string[] scopes = new string[] { "https://www.googleapis.com/auth/devstorage.read_only" };
var credential = GoogleCredential.FromFile(@"C:DataJorgesysjorgesys-8aa7ab2343daa.json").CreateScoped(scopes);
var storage = StorageClient.Create(credential);

var bucket_name = "jorgesys.appspot.com";            
//string bucketId = "pubsite_prod_rev_12345";
//Trying to make a list only inside earnings directoy!
string bucketId = "pubsite_prod_rev_12345/earnings";
StringBuilder sb = new StringBuilder();
try
{
var bucketObjects = storage.ListObjects(bucketId);
foreach (var bucketObject in bucketObjects)
{
sb.AppendLine("Object Name: " + bucketObject.Name);
sb.AppendLine("Id: " + bucketObject.Id);
}
}
catch (Exception ex)
{             
sb.AppendLine("Exception: " + ex.Message);
}

我不想过滤,只获取/earnings/目录内的元素,如何实现这个任务。

> miroslava/earnings_202102_2138916436889858-1.zip
> miroslava/earnings_202103_2138916436889858-2.zip
> miroslava/earnings_202104_2138916436889858-3.zip
> miroslava/earnings_202105_2138916436889858-4.zip
> earning/earnings_202102_2138916436889858-1.zip
> earnings/earnings_202103_2138916436889858-2.zip
> earnings/earnings_202104_2138916436889858-3.zip
> earnings/earnings_202105_2138916436889858-4.zip
> financial-stats/subscriptions/subscriptions_com.jorgesys_mensual1_201607_country.csv
> financial-stats/subscriptions/subscriptions_com.jorgesys_mensual1_201607_device.csv
> financial-stats/subscriptions/subscriptions_com.jorgesys_mensual1_201607_country.csv
> financial-stats/subscriptions/subscriptions_com.jorgesys_week1_201607_device.csv

Google Cloud Storage没有目录。文件名的目录部分称为前缀.

例如对象名称:tmp/log.txt前缀tmp/.

下一个概念是分隔符. 这通常是/

性格。指定目录路径tmp使用tmp/前缀和/分隔符. 任何以开头的对象tmp/并且不包含分隔符(不包括前缀)作为名称返回。任何以开头的对象tmp/并包含分隔符作为前缀返回。示例tmp/子目录/123将返回前缀tmp/子目录/没有额外的名称

有了这个复杂的解释,这里有一个例子:

注意:您的行bucketId不正确。桶名不包含对象名的任何部分。

var bucketName = "pubsite_prod_rev_12345";
// Specify the delimter.
var delimeter = "/";
// Specify the prefix
var prefix = "earnings/";
var storage = StorageClient.Create();
var options = new ListObjectsOptions { Delimiter = delimiter };
var storageObjects = storage.ListObjects(bucketName, prefix, options);
foreach (var storageObject in storageObjects)
{
sb.AppendLine("Object Name: " + storageObject.Name);
}

类StorageClient

类ListObjectOptions

最新更新