Joh*_*y_D 8 list azure blobstorage subdirectory
MS已经宣布像blob存储一样的目录,我正试图像目录一样使用它.通过名称保存一些blob:
Common\Service1\Type1\Object1
Common\Service1\Type1\Object2
Common\Service1\Type2\Object1
Common\Service1\Type2\Object2
Common\Service1\Type3\Object1
Common\Service1\Type3\Object2
Common\Service1\Type3\Object3
Run Code Online (Sandbox Code Playgroud)
我想有可能枚举子目录,例如我有blobclient参考Common容器名称,我想得到子容器列表Type1, Type2, Type3.是否可以获取某些目录中的子目录列表.使用ListBlobs返回当前容器中的完整blob列表.
b2z*_*w2a 16
如果要列出"Common\Service1"目录中的所有"子目录",可以使用以下内容:
var directory = blobContainer.GetDirectoryReference(@"Common/Service1");
var folders = directory.ListBlobs().Where(b => b as CloudBlobDirectory != null).ToList();
foreach (var folder in folders)
{
Console.WriteLine(folder.Uri);
}
Run Code Online (Sandbox Code Playgroud)
完整代码示例:
var random = new Random();
CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
var cloudBlobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("test-container");
blobContainer.CreateIfNotExists();
string[] objects = new[]
{
@"Common\Service1\Type1\Object1", @"Common\Service1\Type1\Object2", @"Common\Service1\Type2\Object1",
@"Common\Service1\Type2\Object2", @"Common\Service1\Type3\Object1", @"Common\Service1\Type3\Object2",
@"Common\Service1\Type3\Object3"
};
foreach (var newObject in objects)
{
var newBlob = blobContainer.GetBlockBlobReference(newObject);
var buffer = new byte[1024];
random.NextBytes(buffer);
newBlob.UploadFromByteArray(buffer,0,buffer.Length);
}
var directory = blobContainer.GetDirectoryReference(@"Common/Service1");
var folders = directory.ListBlobs().Where(b => b as CloudBlobDirectory != null).ToList();
foreach (var folder in folders)
{
Console.WriteLine(folder.Uri);
}
Run Code Online (Sandbox Code Playgroud)
这将为Type1,Type2和Type3目录输出Uri.
Dan*_*man 10
建立在b2zw2a的答案:
@使用时,只需要\,不是/.ToList()追求ListBlobs().ListBlobs()提供延迟加载,将为您提供更好的性能.OfType<CloudBlobDirectory>()过滤出的类型你想给你:
var directory = blobContainer.GetDirectoryReference("Common/Service1");
var folders = directory.ListBlobs().OfType<CloudBlobDirectory>();
foreach (var folder in folders)
{
Console.WriteLine(folder.Uri);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15850 次 |
| 最近记录: |