10

我需要将我拥有的列表与 Azure Blob 存储中的文件进行比较,我需要的唯一部分是获取该 Blob 中文件列表的方法。

例如

blob azureImages
files:
name
something.jpg
asd.jpg
iwda.jpg
my list:
name
something.jpg
asd.jpg

当我将 blob 中的文件与列表进行比较时,我想删除列表中不匹配的文件。

4

1 回答 1

22

您可以使用 CloudBlobContainer.ListBlobs() 获取容器中的 Blob 列表,或者使用CloudBlobDirectory.ListBlobs()获取目录中的 Blob 列表

CloudBlobClient blobClient = new CloudBlobClient(blobEndpoint, new StorageCredentialsAccountAndKey(accountName, accountKey));

//Get a reference to the container.
CloudBlobContainer container = blobClient.GetContainerReference("container");

//List blobs and directories in this container
var blobs = container.ListBlobs();

foreach (var blobItem in blobs)
{
    Console.WriteLine(blobItem.Uri);
}

您需要从 blobItem.Uri 解析文件名,但是您可以使用 LINQ 的 except() 方法来查找差异:

public string FindFilesToDelete(IEnumerable<string> fromAzure, IEnumerable<string> yourList)
{
     return fromAzure.Except(yourList);
}

这将返回 fromAzure 列表中不在 yourList 中的所有内容。

最后,您可以使用此示例删除 blob

于 2012-10-15T18:53:59.723 回答