Google cloud storage - java sdk -列出一个文件夹(包括子文件夹)的所有内容,并区分文件和



我的代码:

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名称使用一些正则表达式。由于文件没有/字符,因此您可以轻松区分两者。

最新更新