12

MS はディレクトリのようなブロブ ストレージを発表しました。私はそれをディレクトリのように使用しようとしています。いくつかの 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

サブディレクトリを列挙できるようにしたいと考えています。たとえば、Commonコンテナー名を参照する blobclient があり、 subcontainers list を取得したいと考えていますType1, Type2, Type3。あるディレクトリのサブディレクトリのリストを取得することは可能ですか? ListBlobs を使用すると、現在のコンテナー内の BLOB の完全なリストが返されます。

4

3 に答える 3

19

「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);
    }

完全なコード サンプル:

    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);
    }

これにより、Type1、Type2、および Type3 ディレクトリの Uri が出力されます。

于 2014-11-11T15:37:58.713 に答える