9

我有一个名为"pictures"的容器,其中有一些名为"Folder1"、"Folder2"的文件夹。所以我的 blob 文件将像这样处理http://optimus.blob.core.windows.net/pictures/Folder1/IMG123.png。使用以下 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();
}

删除“Folder1”中的所有文件后,它将为空。我正在尝试删除空文件夹,但无法做到这一点。是否可以删除文件夹?任何帮助都感激不尽。提前致谢。

4

3 回答 3

6

对于 Azure Blob 存储,实际上并没有“文件夹”对象。“文件夹”实际上只是 blob 名称前缀 - 用于分隔“文件夹”的“/”字符是 blob 命名中的约定,不是必需的。因此,您不必担心——只要没有带有“Folder1”前缀的 blob,就可以了。

于 2015-05-29T19:28:55.940 回答
4

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

但是对于容器,如果要清理整个容器,则需要在删除其 blob 后手动删除容器。

于 2015-06-02T08:56:09.767 回答
0

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

            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

于 2020-12-11T06:27:27.593 回答