如何以编程方式重命名Google存储中的文件夹?

Ela*_*nda 5 java google-app-engine file google-cloud-storage google-cloud-platform

我有一个谷歌存储java客户端.

我想重命名云上的文件夹.

有办法吗?

我看到了更新帖子,但我不确定如何更改名称元数据.

这是我的尝试,但我不知道该填写什么,"entity"没有oac.setName()

public void renameDirectory(String oldPath, String newName) throws IOException {

    final Storage gsClient = GCSlientFactory.get(PromptoConfig.s.GCP_PROJECT_ID).getGSClient();
    final URI uri = URI.create(oldPath);

    ObjectAccessControl oac = new ObjectAccessControl();
    oac.setId("newName");

    final Storage.ObjectAccessControls.Update update = gsClient.objectAccessControls().update(BUCKET_NAME, uri.toString().replace("gs://"+BUCKET_NAME+"/", ""), "", oac);
    update.execute();
}
Run Code Online (Sandbox Code Playgroud)

并且:

final Storage gsClient = GCSlientFactory.get(PromptoConfig.s.GCP_PROJECT_ID).getGSClient();
final URI uri = URI.create(oldPath);

ObjectAccessControl oac = new ObjectAccessControl();
oac.set("name", newName);

final Storage.ObjectAccessControls.Update update = gsClient.objectAccessControls().update(BUCKET_NAME, uri.toString().replace("gs://"+BUCKET_NAME+"/", ""), "allUsers", oac);
update.execute();
Run Code Online (Sandbox Code Playgroud)

Mik*_*rtz 8

GCS不支持真正的文件夹 - 命名空间是扁平的,"/"的含义实际上是由客户端(和客户端库)强加的.因此,无法以原子方式重命名文件夹 - 您需要重命名每个包含的文件,就像gsutil mv命令所做的那样.您可以通过运行如下命令来查看:

gsutil -d mv gs://my-bucket/folder1 gs://my-bucket/folder2
Run Code Online (Sandbox Code Playgroud)

-d选项将使其输出gsutil生成的请求序列以进行重命名.