我的代码:
Page<Blob> blobs = storage.list(bucketName, BlobListOption.prefix(folderPath));
for (Blob blob : blobs.iterateAll()) {
if (!blob.isDirectory()) {
// do stuff with the blob
}
}
,列出this
文件夹及其子文件夹的全部内容,包括:
- 文件夹(名称以
/
结尾,大小为0
的blob对象)
问题:blob.isDirectory()
总是返回false
。
如何正确处理这样的清单和区分文件和文件夹?
谢谢。
如本文档所述-
Cloud Storage使用平面命名空间操作,这意味着文件夹实际上并不存在于Cloud Storage中。如果在bucket your-bucket中创建一个名为folder1/file.txt的对象,该对象的路径是your-bucket/folder1/file.txt,但是没有名为folder1的文件夹;相反,字符串folder1是对象名称的一部分。
所以你所说的目录实际上不是目录或文件夹,它只是文件夹的可视化表示,类似于本地文件浏览器。这就是blob.isDirectory()
总是返回false
的原因。
现在,在您的示例中,为了区分文件和文件夹(它们不是真正的文件夹,而只是一种视觉表示),您可以考虑对blob名称使用一些正则表达式。由于文件没有/
字符,因此您可以轻松区分两者。