删除Azure Blob存储容器中的文件夹

时间:2015-05-29 07:14:49

标签: c# directory azure-storage azure-storage-blobs blobstorage

我有一个名为&#34;图片&#34; 的容器,并且有一些名为&#34; Folder1&#34;,&#34; Folder2&#34; < / em>在里面。因此,我的blob文件将像&#34; http://optimus.blob.core.windows.net/pictures/Folder1/IMG123.png&#34; 一样进行处理。使用下面的C#代码删除文件夹中的文件,

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(*AzureConnectionString*);

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

CloudBlobContainer container = blobClient.GetContainerReference("pictures");

var blobs = container.ListBlobs("Folder1", true);
foreach (var blob in blobs)
{
  container.GetBlockBlobReference(((CloudBlockBlob)blob).Name).DeleteIfExists();
}

删除&#34; Folder1&#34; 中的所有文件后,它将为空。我试图删除空文件夹,但无法找到方法。是否可以删除文件夹?任何帮助都感激不尽。提前谢谢。

3 个答案:

答案 0 :(得分:6)

对于Azure Blob存储,实际上并没有一个&#39;文件夹&#39;宾语。 &#39;夹&#39;实际上只是blob名称前缀 - &#39; /&#39;用于分隔文件夹的字符&#39;是blob命名的约定,而不是要求。所以,你不必担心它 - 只要没有&#34; Folder1&#34;前缀,那你很好。

答案 1 :(得分:2)

在任何blob容器下,都没有真正的文件夹或目录。它们是用于管理容器下blob的文件夹结构的虚拟目录,如果删除了包含任何虚拟目录或文件夹的所有blob,则不存在此类文件夹。它是文件夹结构的所有逻辑表示,您可以忽略任何容器下的文件夹。

但是当涉及到容器时,如果要清理整个容器,则需要在删除其blob后手动删除容器。

答案 2 :(得分:0)

尝试将Azure Blob存储客户端库v12用于.NET。

            BlobBatchClient batch = service.GetBlobBatchClient();
            await batch.DeleteBlobsAsync(new Uri[] { valid.Uri, invalid.Uri });

这里有样品 https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs.Batch/samples/Sample03b_BatchingAsync.cs