2017-02-22 67 views

回答

1

Acording到Azure存储SDK的javadocs为Java,使用该方法listBlobs(String prefix, boolean useFlatBlobListing, EnumSet<BlobListingDetails> listingDetails, BlobRequestOptions options, OperationContext opContext)BlobListingDetails.SNAPSHOTS用于容器列出所有斑点包括snapshot blob通过该方法isSnapshot()进行过滤。

这是我的示例代码如下。

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(); 
// List all containers of a storage account 
Iterable<CloudBlobContainer> containers = client.listContainers(); 
String prefix = null; 
boolean useFlatBlobListing = true; 
// Specify the blob list which include snapshot blob 
EnumSet<BlobListingDetails> listingDetails = EnumSet.of(BlobListingDetails.SNAPSHOTS); 
BlobRequestOptions options = null; 
OperationContext opContext = null; 
for (CloudBlobContainer container : containers) { 
    Iterable<ListBlobItem> blobItems = container.listBlobs(prefix, useFlatBlobListing, listingDetails, options, 
        opContext); 
    for (ListBlobItem blobItem : blobItems) { 
     if (blobItem instanceof CloudBlob) { 
      CloudBlob blob = (CloudBlob) blobItem; 
      // Check a blob whether be a snapshot blob 
      if (blob.isSnapshot()) { 
       System.out.println(blobItem.getStorageUri()); 
      } 
     } 
    } 
} 

如果您想使用REST API来实现此需求,请执行以下步骤。

  1. 使用List Containers作为存储帐户来列出所有容器。
  2. 使用List Blobs与作为小节中的referenceBlob and Snapshot List url参数include={snapshots}所述列出一种容器,其包括快照斑点的所有斑点,然后过滤所有快照斑点。
相关问题