列出 Azure blob 存储中不同目录的 blob
Posted
技术标签:
【中文标题】列出 Azure blob 存储中不同目录的 blob【英文标题】:list blobs of different directory in Azure blob Storage 【发布时间】:2021-12-21 01:28:02 【问题描述】:我们有以下文件夹结构,我们在 Azure 数据湖中存储了数据。
我想列出 Data 目录中存在的所有 blob。 IE。 abc.txt,xyz.txt,lmn.txt,abc1.txt,xyz1.txt,lmn1.txt,abc2.txt,xyz2.txt,lmn2.txt,gh.txt,kim.txt,tae.txt,.. ..
我怎样才能获得仅在数据目录中的所有 blob?
Azure 中的文件夹结构图像:
我想从每年和每月的文件夹中获取所有用户的数据文件夹中存在的所有 blob。
代码:
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.Collections.Generic;
namespace DataLake
class Program
static void Main(string[] args)
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("connection string");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("dev");
List<string> blobnames = new List<string>();
var allblobs = container.ListBlobs(useFlatBlobListing: true);
foreach (var b in allblobs)
//Console.WriteLine("\t" + b.Uri);
string name = ((CloudBlockBlob)b).Name;
// Console.WriteLine(name);
string[] names = name.Split('/');
blobnames.Add(names[names.Length - 1]);
foreach (var data in blobnames)
Console.WriteLine(data);
输出:
【问题讨论】:
您能指定您使用的编程语言吗? 我正在使用c#来实现这个 【参考方案1】:尝试使用useFlatBlobListing
我在我的系统中进行了测试,尝试使用此代码
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using System;
using System.Collections.Generic;
using System.IO;
namespace BlobList
class Program
static void Main(string[] args)
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("Connection String");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("test");
List<string> blobnames = new List<string>();
//var allblobs = container.ListBlobs(prefix: "test1/test2", useFlatBlobListing: true);
var allblobs = container.ListBlobs(useFlatBlobListing: true);
foreach (var b in allblobs)
//Console.WriteLine("\t" + b.Uri);
string name = ((CloudBlockBlob)b).Name;
Console.WriteLine(name);
string[] names = name.Split('/');
blobnames.Add(names[names.Length - 1]);
foreach (var data in blobnames)
Console.WriteLine(data);
我尝试创建与您相同的文件夹结构
输出
【讨论】:
我按照您的建议使用,但没有得到预期的响应。我已经编辑了你可以在那里查看的问题。 嗨 vaishali,您评论了拆分操作。请删除该 cmets,您能否复制我在回答中提到的相同代码。再试一次,让我知道您仍然面临问题。 我删除了我得到相同响应的 cmets。也编辑了有问题的内容。 并评论 'Console.WriteLine(name);
这一行
它还提供了所有文件夹名称和其他文件夹中存在的 blob以上是关于列出 Azure blob 存储中不同目录的 blob的主要内容,如果未能解决你的问题,请参考以下文章
在 Node.js 中列出来自 Azure Blob 存储和 Readstream 的 Blob
列出存储容器内容时获取 Azure 存储以返回 blob URL