如何使用 Java API 在 google 云存储桶中创建一个空文件夹
How to create an empty folder in google cloud bucket using Java API
我正在使用 JSON API - Google API 客户端库 Java 访问Google 云存储中的对象。我需要在存储桶中创建(而不是上传)一个空文件夹。 Google Developer Web Console has that option to creating a directory,但是 Java API 和 gsutil 命令都没有创建文件夹命令。如果有人知道该怎么做,请告诉我。提前致谢...
您可以通过上传带有尾部斜杠的零大小对象来模拟文件夹。
如问题评论中所述,Google云存储不是文件系统,模拟文件夹有严重的局限性。
这是我创建空(模拟)文件夹的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;
}
我认为您最好在文件名中创建文件夹。例如,如果您需要一个名为 images 的文件夹和另一个名为 docs 的文件夹,当您给出要上传的对象的名称时,请按以下方式执行 images/name_of_file 或 docs/name_of_file.
如果文件的名称是 images/dogImage 并且您上传了该文件,您会在存储桶中找到一个名为 images 的文件夹。
希望对你和其他人有所帮助
我正在使用 JSON API - Google API 客户端库 Java 访问Google 云存储中的对象。我需要在存储桶中创建(而不是上传)一个空文件夹。 Google Developer Web Console has that option to creating a directory,但是 Java API 和 gsutil 命令都没有创建文件夹命令。如果有人知道该怎么做,请告诉我。提前致谢...
您可以通过上传带有尾部斜杠的零大小对象来模拟文件夹。
如问题评论中所述,Google云存储不是文件系统,模拟文件夹有严重的局限性。
这是我创建空(模拟)文件夹的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;
}
我认为您最好在文件名中创建文件夹。例如,如果您需要一个名为 images 的文件夹和另一个名为 docs 的文件夹,当您给出要上传的对象的名称时,请按以下方式执行 images/name_of_file 或 docs/name_of_file.
如果文件的名称是 images/dogImage 并且您上传了该文件,您会在存储桶中找到一个名为 images 的文件夹。
希望对你和其他人有所帮助