我是GCS的新手。我试图在“文件夹”中列出文件并下载它们,但是我的列表返回的文件夹名称为索引0。
如何仅列出文件名而不列出目录名?还是应该在返回列表后只对数组进行shift()处理?
import java.io.File
import sbtassembly.MergeStrategy
class MyMergeStrategy extends MergeStrategy{
override def name: String = "Rename to application.conf"
override def apply(tempDir: File, path: String, files: Seq[File]): Either[String, Seq[(File, String)]] = {
Right(files.map(_ -> "application.conf"))
}
}
答案 0 :(得分:1)
Google Cloud Storage没有真正的“文件夹”。而是使用List Objects方法的prefix和delimiter参数来模拟它们。
您的操作方式是正确的。但是,当您使用前缀列出时,将返回以该前缀开头的所有对象,直至指定的传送器为止。就像您发现的那样,这意味着,如果有一个“目录占位符”对象(以/
结尾的对象),它将被返回。注意,这也意味着该前缀的任何“子目录”也将被返回。例如,如果您在存储桶中具有以下对象列表:
testFiles/
testFiles/a
testFiles/b
testFiles/c/d
testFiles/v
如果使用prefix=testFiles/
和delimiter=/
调用列表对象,则会返回以下内容:
items =
testFiles/
testFiles/a
testFiles/b
testFiles/v
prefixes =
testFiles/c/
这是因为testFiles/
实际上是GCS中存储桶中的一个对象。