Azure Blob 存储 Java SDK 12 从 blob 名称中提取文件名
Azure Blob Storage Java SDK 12 extract file name from blob name
假设我有这样的 blob 结构:
dir0
├── dir1
│ ├── file11
│ └── file12
├── dir2
└── dir3
在使用 listBlobsByHierarchy("dir0/dir1/")
方法列出包含两个文件 file11
、file12
的 dir1
之后,我用 blobName
[=50 得到两个 blob =] 设置为 dir0/dir1/file11
和 dir0/dir1/file12
,因此 <virtual_path>
/<file_name>
。没关系,但在某些时候我需要得到 <file_name>
部分。
我的问题是:Java 的 Azure 存储 SDK 12 是否提供了从 blob 名称中获取 <file_name>
部分的机制? 我可以自己做但很难相信 SDK 不提供此功能......也许你们知道不同的优雅方式来做到这一点?你平时是怎么处理这些事情的?
SDK 似乎不支持构建前缀或从 blob 名称获取文件名,这对我来说有点奇怪 :P 我希望 fileName
字段 BlobItem
class 或 buildPrefix(List<String> segments)
用'/'连接路径段的方法。
你只需要做:
blobName.replaceFirst("^/dir0/dir1/", "")
blob 存储中的目录不是真实的,结构是扁平的,只有一些辅助方法考虑了前缀。有关详细信息,请参阅 this explanation。
您始终可以启用 hierarchical namespace (aka. Datalake Storage) in your blob account. This makes blob containers more like traditional filesystem with real directories. You are using a different SDK then (->docs). And its DirectoryEntry 对象区分 name
(无路径)和 fullName
(有路径)。
假设我有这样的 blob 结构:
dir0
├── dir1
│ ├── file11
│ └── file12
├── dir2
└── dir3
在使用 listBlobsByHierarchy("dir0/dir1/")
方法列出包含两个文件 file11
、file12
的 dir1
之后,我用 blobName
[=50 得到两个 blob =] 设置为 dir0/dir1/file11
和 dir0/dir1/file12
,因此 <virtual_path>
/<file_name>
。没关系,但在某些时候我需要得到 <file_name>
部分。
我的问题是:Java 的 Azure 存储 SDK 12 是否提供了从 blob 名称中获取 <file_name>
部分的机制? 我可以自己做但很难相信 SDK 不提供此功能......也许你们知道不同的优雅方式来做到这一点?你平时是怎么处理这些事情的?
SDK 似乎不支持构建前缀或从 blob 名称获取文件名,这对我来说有点奇怪 :P 我希望 fileName
字段 BlobItem
class 或 buildPrefix(List<String> segments)
用'/'连接路径段的方法。
你只需要做:
blobName.replaceFirst("^/dir0/dir1/", "")
blob 存储中的目录不是真实的,结构是扁平的,只有一些辅助方法考虑了前缀。有关详细信息,请参阅 this explanation。
您始终可以启用 hierarchical namespace (aka. Datalake Storage) in your blob account. This makes blob containers more like traditional filesystem with real directories. You are using a different SDK then (->docs). And its DirectoryEntry 对象区分 name
(无路径)和 fullName
(有路径)。