2012-10-15 20 views
9

Tôi cần so sánh từ danh sách mà tôi có trong các tệp trong vùng lưu trữ màu xanh dương, phần duy nhất tôi cần là một cách để có danh sách các tệp trong blob đó.Có cách nào để lấy tất cả các tệp từ một đốm màu xanh da trời

Ví dụ

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

Khi tôi so sánh các tập tin từ đốm màu với danh sách của tôi, tôi muốn xóa các tập tin mà không có trận đấu trong danh sách của tôi.

Trả lời

20

Bạn có thể nhận được một danh sách các đốm màu trong một container với CloudBlobContainer.ListBlobs() hoặc bên trong một thư mục với 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); 
} 

Bạn sẽ cần phải phân tích các tên tập tin từ blobItem.Uri, nhưng sau đó bạn có thể sử dụng LINQ của Trừ() phương pháp để tìm ra sự khác biệt:

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

đó sẽ trở lại tất cả mọi thứ trong danh sách fromAzure đó không phải là trong yourList.

Và cuối cùng bạn có thể xóa các đốm màu với this example

+0

Tôi có cấu trúc chứa này/folder1/folder2/folder3/myfile.txt. Container.ListBlobs chỉ trả về tối đa thư mục1. Có cách nào để lấy tất cả các tệp, nói trong thư mục3 không? –

Các vấn đề liên quan