我有一个在 GAE 中运行的 Scala Web 应用程序。我需要使用 Java 库 - JWI - 这需要我将 Wordnet 的根文件夹传递给edu.mit.jwi.Dictionary
的构造函数。
我曾想过将所有 Wordnet 的东西都放到 Google Cloud Storage 中,但它根本没有文件夹的概念。所以,我的问题是:有什么方法可以用 Google Cloud Storage 做我想做的事,还是应该使用其他任何东西?
我有一个在 GAE 中运行的 Scala Web 应用程序。我需要使用 Java 库 - JWI - 这需要我将 Wordnet 的根文件夹传递给edu.mit.jwi.Dictionary
的构造函数。
我曾想过将所有 Wordnet 的东西都放到 Google Cloud Storage 中,但它根本没有文件夹的概念。所以,我的问题是:有什么方法可以用 Google Cloud Storage 做我想做的事,还是应该使用其他任何东西?
当您说“Google Cloud Java 库中没有用于文件夹操作的 API”时,您是对的。截至今天,Java 客户端库没有文件夹操作。你可以在这里查看图书馆
即使 gsutil 以不同的方式处理子目录,您也可以使用 Google Cloud Storage (GCS) ,因为它的行为类似于常规文件夹并使用相同的表示法。
我不确定您的应用程序是如何工作的,但如果我猜对了:
在此处查找 Cloud Storage 的 Java 客户端库文档。您可能需要比我为您编写的以下功能更多的功能,以创建存储桶、上传文件并下载它。
package com.example.storage;
// Imports the Google Cloud client library
import com.google.cloud.storage.Acl;
import com.google.cloud.storage.Acl.Role;
import com.google.cloud.storage.Acl.User;
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
public class QuickstartSample {
public static void main(String... args) throws Exception {
// Instantiates a client
Storage storage = StorageOptions.getDefaultInstance().getService();
// The name for the new bucket
String bucketName = args[0]; // "my-new-bucket";
// Creates the new bucket
Bucket bucket = storage.create(BucketInfo.of(bucketName));
System.out.printf("Bucket %s created.%n", bucket.getName());
// [START uploadFile]
// Object name
String fileName="filename.ext";
// Create file inside the bucket
BlobInfo blobInfo =
storage.create(
BlobInfo
.newBuilder(bucketName, fileName)
// Modify access list to allow all users with link to read file
.setAcl(new ArrayList<>(Arrays.asList(Acl.of(User.ofAllUsers(), Role.READER))))
.build()
// other options required
);
// return the public download link
blobInfo.getMediaLink();
// [END uploadFile]
// Copy file from a bucket
String blobName = "filename.ext";
BlobId blobId = BlobId.of(bucketName, blobName);
Blob blob = storage.get(blobId);
}
最后,在这里找到如何编译代码并运行它:
mvn clean package -DskipTests
mvn exec:java -Dexec.mainClass=com.example.storage.QuickstartSample -Dexec.args="bucketName"