我需要从我所拥有的列表与azure的blob存储中的文件进行比较,我需要的唯一部分是获取该blob中文件列表的方法。
例如
blob azureImages files: name something.jpg asd.jpg iwda.jpg
my list:
name
something.jpg
asd.jpg
当我将blob中的文件与我的列表进行比较时,我想删除列表中没有匹配的文件。
答案 0 :(得分:22)
您可以使用CloudBlobContainer.ListBlobs()或在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中的所有内容。
最后,您可以使用this example
删除blob