java - Azure Blob 存储 Java SDK 12 从 Blob 名称中提取文件名

标签 java azure blob storage filenames

假设我有这样的 blob 结构:

dir0
├── dir1
│ ├── file11
│ └── file12
├── dir2
└── dir3

列出 dir1 后包含两个文件file11 , file12listBlobsByHierarchy("dir0/dir1/")方法我得到两个 Blob blobName属性设置为dir0/dir1/file11dir0/dir1/file12 ,所以<virtual_path>/<file_name> 。没关系,但在某些时候我需要获取 <file_name>部分。

我的问题是:Azure Storage SDK 12 for Java 是否提供了获取 <file_name> 的机制? blob 名称的一部分? 我可以自己做,但很难相信 SDK 不提供此功能...也许你们知道不同的优雅方法?您通常如何处理此类事情?

对我来说有点奇怪的是 SDK 似乎不支持构建前缀或从 blob 名称获取文件名:P 我期望像 fileName 这样的东西领域 BlobItem类或buildPrefix(List<String> segments)用“/”连接路径段的方法。

最佳答案

你只需这样做:

blobName.replaceFirst("^/dir0/dir1/", "")

blob 存储中的目录不是真实的,结构是扁平的,并且只有一些考虑前缀的辅助方法。请参阅this explanation了解更多详情。

您始终可以启用hierarchical namespace (又名 Datalake Storage)在您的 blob 帐户中。这使得 blob 容器更像具有真实目录的传统文件系统。您正在使用不同的 SDK (-> docs )。以及它的DirectoryEntry对象区分 name(不带路径)和 fullName(带路径)。

关于java - Azure Blob 存储 Java SDK 12 从 Blob 名称中提取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71006583/

相关文章:

Azure Active Directory OAuth 资源所有者密码凭据流程

javascript - 命名 html blob url 以便于引用

c# - 使用 System.IO.FileStream 将字节数组保存为图像时无法看到图像

Javafx GUI 不显示

java - 未找到名称为 'Run' 的关键字

java - 错误: opening Service Client using correct connection string

azure - 在没有 Microsoft.Azure.Management.Sql.Fluent 的情况下创建 Azure SQL Server

java - 初始化 PDFont (Apache PDFBox) 时抛出 DamagedFontException

java - 我的aspectj模式的方法不起作用

php - 为什么压缩的 blob 值不会改变 sqlite 数据库大小?