2012-10-15 123 views
9

我需要从列表中进行比较,我需要的是azure的blob存储中的文件,我需要的仅有一部分是获取该blob中的文件。有没有办法从azure中获取所有文件

例如

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

当我比较从我的列表中的BLOB文件,我想删除在我的列表中没有匹配的文件。

回答

20

你可以得到的斑点的列表中的容器与CloudBlobContainer.ListBlobs()CloudBlobDirectory.ListBlobs()

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的除()方法找到区别:

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

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

最后一点,你可以用this example

+0

删除斑点我有这样的结构,容器/资料夹/文件夹2/folder3/myfile.txt的。 Container.ListBlobs仅返回到folder1。有没有办法得到所有文件,说folder3? –

相关问题