如何仅列出文件而不是GCS中的文件夹?

时间:2019-01-13 16:37:59

标签: node.js google-cloud-storage

我是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"))
  }
}

1 个答案:

答案 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中存储桶中的一个对象。