如何检查CloudBlobDirectory是否存在?

Par*_*rma 5 azure azure-storage azure-storage-blobs

在我编程的软件中,我试图在Azure的blobs结构上创建一个虚拟文件系统.

很多时候,在这个过程中,我从系统中得到一条路径,我需要判断路径是a Blob还是只是BlobDirectoryazure提供的虚拟路径.我通过将它从一种形式转换为另一种形式并处理错误来做到这一点.

但是现在,如果我知道路径指向虚拟目录,我该如何检查该虚拟目录是否存在?

我可以CloudBlobDirectory使用以下代码获取对它的引用:

var blobDirectory = client.GetBlobDirectoryReference("Path_to_dir");
Run Code Online (Sandbox Code Playgroud)

kni*_*hor 10

在blob存储中,目录本身不作为项存在.你可以拥有的是一个名称可以解释为在目录中的blob.如果你看一下底层的REST API,你会发现那里没有关于目录的东西.存储客户端库正在为您做的是搜索以目录名称开头的blob,然后是分隔符,例如"DirectoryA/DirectoryB/FileName.txt".这意味着,对于存在的目录,它必须包含blob.要检查目录是否存在,您可以尝试:

var blobDirectory = client.GetBlobDirectoryReference("Path_to_dir");
bool directoryExists = blobDirectory.ListBlobs().Count() > 0
Run Code Online (Sandbox Code Playgroud)

要么

bool directoryExists = client.ListBlobsWithPrefix("DirectoryA/DirectoryB/").Count() > 0
Run Code Online (Sandbox Code Playgroud)

我知道列出目录中的所有内容只是为了得到计数并不是一个好主意,我相信你可以想出一个更好的方法.