如何使用Java API在Google Cloud bucket中创建一个空文件夹

时间:2015-11-13 10:03:47

标签: google-cloud-storage

我正在使用 JSON API - Google API Client Library for Java 来访问Google云端存储中的对象。我需要在存储桶中创建(不上传)空文件夹。 Google Developer Web Console has that option to creating a directory,但在Java API或gsutil命令中,两者都没有create folder命令。如果有人知道,请告诉我。在此先感谢...

3 个答案:

答案 0 :(得分:5)

您可以通过上传带有斜杠的零大小对象来模拟文件夹。

如问题评论中所述,Google云端存储不是文件系统,仿真文件夹存在严重的限制。

答案 1 :(得分:3)

我认为最好在文件名中创建文件夹。例如,如果您需要一个名为images的文件夹和另一个名为docs的文件夹,当您提供要上载的对象的名称时,请按以下方式执行此操作 images / name_of_file docs / name_of_file

如果文件名是 images / dogImage ,并且您上传该文件,则会在您的存储桶中找到一个名为images的文件夹。

我希望能帮助你和其他人

答案 2 :(得分:1)

这是我创建空(模拟)文件夹的Java方法:

public static void createFolder(String name) throws IOException {
    Channels.newOutputStream(
            createFile(name + "/")
    ).close();
}

public static GcsOutputChannel createFile(String name) throws IOException {
    return getService().createOrReplace(
            new GcsFilename(getName(), name),
            GcsFileOptions.getDefaultInstance()
    );
}

private static String name;

public static String getName() {
    if (name == null) {
        name = AppIdentityServiceFactory.getAppIdentityService().getDefaultGcsBucketName();
    }
    return name;
}

public static GcsService service;

public static GcsService getService() {
    if (service == null) {
        service = GcsServiceFactory.createGcsService(
                new RetryParams.Builder()
                        .initialRetryDelayMillis(10)
                        .retryMaxAttempts(10)
                        .totalRetryPeriodMillis(15000)
                        .build());
    }
    return service;
}