簡體   English   中英

如何在 Java 中計算 Azure 存儲容器大小?

[英]How to compute Azure Storage Container Size in Java?

雖然以下鏈接詳細介紹了使用 C# 計算存儲大小的方法,但我在 Java 中沒有看到類似的方法。 感謝有人可以發布 Java 的示例代碼。 Azure 存儲容器大小

這是我的示例代碼。 更多詳情請參考Azure Storage SDK for Javajavadocs

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();
}

為了在 Java 中獲取 Azure blob 的容器大小,您需要遍歷其中存在的 blob 列表。

val container: CloudBlobContainer = blobClient.getContainerReference(containerName)
val blob: CloudBlockBlob = container.getBlockBlobReference(blobPath)
blob.downloadAttributes()
blob.getProperties.getLength

確保您確實調用了 downloadAttributes,否則屬性將為空。

您可以參考此文檔以獲取更多詳細信息https://docs.microsoft.com/en-us/java/api/com.microsoft.azure.storage.blob.cloudblockblob?view=azure-java-legacy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM