【发布时间】:2015-09-29 21:54:12
【问题描述】:
我有一个使用 Java 创建的 GAE 应用程序。我有一个包含文件夹和文件的存储桶,我试图将它们复制到同一项目中的另一个存储桶。 我的bucket的文件夹结构如下:
Bucket_test
|-------Folder1/
|-----testtxt1.txt
|-------Folder2/
|-----testtxt2.txt
我正在尝试使用以下代码复制对象
String old_bucket = "Bucket_test";
String new_bucket = "Bucket_test_new";
Bucket isbkt = new GoogleStorageHelper()
.tryCreateBucket(new_bucket, storage);
Storage.Objects.List listObjects = storage.objects().list(old_bucket);
Objects objects;
objects = listObjects.execute();
for (StorageObject object
: objects.getItems()) {
Storage.Objects.Copy copyObject
=
storage.objects()
.copy(old_bucket, object.getName(), new_bucket, object.getName(), object);
try {
System.out.println("Trying to copy over " + object.getName() + " from " + old_bucket + " >>>> " + new_bucket);
//copy the file over to the new bucket
Object copyRes = copyObject.execute();
System.out.println(copyRes.toString());
}
catch (Exception e) {
System.out.println("Exception trying to copy over " + object.getName() + " " + e.getLocalizedMessage());
}
发生了什么? 我收到以下错误:
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Invalid bucket name: 'Bucket_test/Folder1'.",
"reason" : "invalidParameter",
"extendedHelp" : "https://developers.google.com/storage/docs/bucketnaming"
} ],
"message" : "Invalid bucket name: 'Bucket_test/Folder1'."
}
}
应该怎么做?
我希望它复制文件和文件夹,因为两者都被视为对象。如果文件直接在存储桶中而不是在任何文件夹中,我就能够成功地复制文件。
- 还有其他方法可以复制文件和文件夹吗?
- 是否需要使用前缀和分隔符 SRC:https://cloud.google.com/storage/docs/json_api/v1/objects/list 列出它们?
【问题讨论】:
-
@c f.你找到解决办法了吗?
标签: java google-app-engine google-cloud-storage