java如何读取gcs bucket中的文件内容
我想在GCS bucket中打印文件中的数据。根据我的要求,文件不应下载到本地系统,但代码应直接从gcs bucket itselef读取代码。由于我的文件很大,我不想将文件下载到本地系统
下面是我正在尝试的代码,但没有得到预期的输出
import java.io.*;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.ReadChannel;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.io.*;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.ReadChannel;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
public class BucketData{
public static void main(String[] args) throws IOException{
String PROJECT_ID = "project_name";
String PATH_TO_JSON_KEY = "path/to/json_key";
System.out.println(PATH_TO_JSON_KEY);
String BUCKET_NAME = "bucket";
String OBJECT_NAME = "abhi.txt";
StorageOptions options = StorageOptions.newBuilder()
.setProjectId(PROJECT_ID)
.setCredentials(GoogleCredentials.fromStream(
new FileInputStream(PATH_TO_JSON_KEY))).build();
Storage storage = options.getService();
Blob blob = storage.get(BUCKET_NAME, OBJECT_NAME);
ReadChannel r = blob.reader();
System.out.println(r);
}
}
# 1 楼答案
对于您的请求,这应该可以:
Blob blob = storage.get(BUCKET_URL, OBJECT_URL); String fileContent = new String(blob.getContent()); System.out.println(fileContent)
请记住,如果你的文件很大,那么,保存在内存中不是最好的。你可能想重新考虑这是否对你最好。这将在内存中完全读取文件。如果你的应用程序执行另一个操作,那么你可以轻松达到极限
查看this Cloud Storage Client Libraries了解更多详细信息