我有一个Java代码,其中列出了blob并在for循环中进行过滤,以仅提取具有特定扩展名的文件。有没有一种方法可以查询/请求容器以仅返回具有特定扩展名的blob?我不想遍历容器中的所有斑点来做到这一点。
答案 0 :(得分:1)
有没有一种方法可以查询/请求容器以仅返回blob 具体的扩展名?
不幸的是,没有。您无法查询Blob存储以返回具有特定扩展名的Blob。
我不想遍历容器中的所有斑点 这个。
如果您使用的是Storage REST API,那是唯一的方法。您将需要在容器中列出blob,然后遍历这些blob,并根据客户端的扩展名(或任何其他条件)进行过滤。
可能的解决方案
一种可能的解决方案是使用Azure Search Service
并在其中为您的Blob元数据建立索引。然后,您应该可以搜索特定的扩展名并获取blob列表。
答案 1 :(得分:1)
您可以使用 ListBlobsOptions() 和 setPrefix 根据前缀进行过滤,如下所示
ListBlobsOptions options=new ListBlobsOptions();
options.setPrefix("<<prefix>>");
Duration fromDays = Duration.of(10, ChronoUnit.MINUTES);
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("containerName");
for (BlobItem blobItem : containerClient.listBlobs(options,fromDays)) {
System.out.println("\t" + blobItem.getName());
}
答案 2 :(得分:0)
这就是您所需要的
BlobContainer.ListBlobs(prefix, useFlatBlobListing: true, blobListingDetails: BlobListingDetails.None)
.OfType<CloudBlockBlob>()
.Where(x=> x.Name.EndsWith(".json"));
prefix
只是搜索的部分路径。
结果是IEnumerable<CloudBlockBlob>
。