c# - Azure 存储容器大小

标签 c# azure azure-storage

如何获取 Azure 存储中容器的大小?我通过 C# API 访问 Azure 存储:

var account = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureStoragePrimary"]);
var client = account.CreateCloudBlobClient();
var container = client.GetContainerReference("myContainer");

最佳答案

可能更完整的方法。关键的区别是 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++;
    }                        
}

关于c# - Azure 存储容器大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14376459/

相关文章:

azure - SAS token 中的signedVersion 未从ARM 模板正确生成

java azure存储错误 "enumerating the result"

c# - 为什么要在方法足够的地方使用事件?

c# - 如何让 Job 在 Quartz.Net 中引发 EventHandler?

azure - 事件网格不会使用逻辑应用触发

Azure Linux Web 应用程序 : change OpenSSL default security level?

azure - Azure WebJobs 中的 BlobTrigger 不会在 WebJob 启动后添加的文件上触发

c# - 嵌套的 linq 查询,如何获得不同的值?

c# - 具有嵌套多对多关系的 LINQ to Entity Framework 错误

Azure BLOB 存储虚拟请求