如何用Java计算Azure存储容器大小?

2024-01-03

虽然以下链接详细介绍了使用 C# 计算存储大小的方法,但我在 Java 中没有看到类似的方法。如果有人可以发布 Java 示例代码,我将不胜感激。Azure 存储容器大小 https://stackoverflow.com/questions/14376459/azure-storage-container-size


这是我的示例代码。欲了解更多详情,请参阅javadocs https://azure.github.io/azure-storage-java/ of 适用于 Java 的 Azure 存储 SDK http://mvnrepository.com/artifact/com.microsoft.azure/azure-storage.

String accountName = "<your-storage-account-name>";
String accountKey = "<your-storage-account-key>";
String storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s";
String connectionString = String.format(storageConnectionString, accountName, accountKey);
CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
CloudBlobClient client = account.createCloudBlobClient();
String containerName = "mycontainer";
CloudBlobContainer container = client.getContainerReference(containerName);
long size = 0L;
Iterable<ListBlobItem> blobItems = container.listBlobs();
for (ListBlobItem blobItem : blobItems) {
    if (blobItem instanceof CloudBlob) {
        CloudBlob blob = (CloudBlob) blobItem;
        size += blob.getProperties().getLength();
    }
}

如果您需要计算包含快照的容器的大小,请使用下面的代码获取 blob 列表。

// If count blob size for a container include snapshots
String prefix = null;
boolean useFlatBlobListing = true;
EnumSet<BlobListingDetails> listingDetails = EnumSet.of(BlobListingDetails.SNAPSHOTS);
BlobRequestOptions options = null;
OperationContext opContext = null;
Iterable<ListBlobItem> blobItems = container.listBlobs(prefix, useFlatBlobListing, listingDetails, options, opContext);

如果只是计算容器中快照的大小,请使用下面的代码检查 blob 是否是快照。

if (blob.isSnapshot()) {
    size += blob.getProperties().getLength();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用Java计算Azure存储容器大小? 的相关文章

随机推荐