2015-08-19 49 views
1

如何使用C#语言知道Azure中容器的大小。我有几百TB的文件,所以我不会递归地工作。我试着用下面的代码。如何知道Windows Azure中一个容器的C#大小?

var key = Util.GetPassword("Storage Account Key"); 
var accountName = "mystorageaccount"; 
var connectionString = "DefaultEndpointsProtocol=https;AccountName=" 
         + accountName + ";AccountKey=" + key; 
var account = CloudStorageAccount.Parse(connectionString); 
var blobClient = account.CreateCloudBlobClient(); 
var blobContainer = blobClient.GetContainerReference("mycontainer"); 
long fileSize = 0; 
foreach (CloudBlockBlob blobItem in blobContainer.ListBlobs()) 
{ 
    fileSize += blobItem.Properties.Length; 
} 
fileSize.Dump(); 

回答

1

这里是你正在寻找...

 string key = ""; 
     string accountName = "mystorageaccount"; 
     string connectionString = "DefaultEndpointsProtocol=https;AccountName=" 
           + accountName + ";AccountKey=" + key; 
     var account = CloudStorageAccount.Parse(connectionString); 
     var blobClient = account.CreateCloudBlobClient(); 
     var blobContainer = blobClient.GetContainerReference("mycontainer"); 
     long fileSize = 0; 
     foreach(CloudBlobContainer container in blobClient.ListContainers()) 
     { 
      fileSize += (from ICloudBlob blob in 
          container.ListBlobs(useFlatBlobListing: true) 
          select blob.Properties.Length).Sum(); 
     } 
+0

刚一说明,如果斑点数很高,最好是使用BlobContinuationToken实现分页代码。否则上面的代码将超时。 – Hanno

相关问题