Vác*_*ych 8 c# azure azure-storage
如何在Azure存储中获取容器大小?我通过C#API访问Azure存储:
var account = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureStoragePrimary"]);
var client = account.CreateCloudBlobClient();
var container = client.GetContainerReference("myContainer");
Run Code Online (Sandbox Code Playgroud)
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureStoragePrimary"]);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("myContainer");
int fileSize = 0;
foreach (var blobItem in blobContainer.ListBlobs())
{
fileSize += blobItem.Properties.Length;
}
Run Code Online (Sandbox Code Playgroud)
fileSize 包含容器的大小,即包含的blob(文件)的总大小.
参考:CloudBlob:http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.cloudblob_methods.aspx
一种可能更完整的方法.关键的区别是listblobs()调用中的第二个参数,它强制执行一个平面列表:
public class StorageReport
{
public int FileCount { get; set; }
public int DirectoryCount { get; set; }
public long TotalBytes { get; set; }
}
//embdeded in some method
StorageReport report = new StorageReport() {
FileCount = 0,
DirectoryCount = 0,
TotalBytes = 0
};
foreach (IListBlobItem blobItem in container.ListBlobs(null, true, BlobListingDetails.None))
{
if (blobItem is CloudBlockBlob)
{
CloudBlockBlob blob = blobItem as CloudBlockBlob;
report.FileCount++;
report.TotalBytes += blob.Properties.Length;
}
else if (blobItem is CloudPageBlob)
{
CloudPageBlob pageBlob = blobItem as CloudPageBlob;
report.FileCount++;
report.TotalBytes += pageBlob.Properties.Length;
}
else if (blobItem is CloudBlobDirectory)
{
CloudBlobDirectory directory = blobItem as CloudBlobDirectory;
report.DirectoryCount++;
}
}
Run Code Online (Sandbox Code Playgroud)
我已将Windows Azure SDK中的Microsoft.WindowsAzure.StorageClient.dll 1.1.0.0 更新为Windows Azure Storage NuGet包中的Microsoft.WindowsAzure.Storage.dll 2.0.0.0,现在可以正常使用.
long size = 0;
var list = container.ListBlobs();
foreach (CloudBlockBlob blob in list) {
size += blob.Properties.Length;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8480 次 |
| 最近记录: |