【问题标题】:How to read the content of file in gcs bucket如何读取 gcs 存储桶中的文件内容
【发布时间】:2020-01-21 13:17:21
【问题描述】:

我想打印 GCS 存储桶中文件中存在的数据。根据我的要求,文件不应下载到本地系统,但代码应直接从 gcs 存储桶中读取代码。由于我的文件很大,我不想将文件下载到本地系统。

下面是我正在尝试的代码,但我没有得到预期的输出。

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);

}
} 

【问题讨论】:

  • “...但我没有得到预期的输出”是什么意思?你在找什么?您实际遇到了哪些错误或问题?
  • 我实际上需要打印文件中的内容,或者至少我需要一个包含文件中数据的字符串变量

标签: java google-cloud-platform sendgrid


【解决方案1】:

根据您的要求,这应该可行:

Blob blob = storage.get(BUCKET_URL, OBJECT_URL); String fileContent = new String(blob.getContent()); System.out.println(fileContent)

请记住,如果您的文件很大,那么保存在内存中并不是最好的选择。您可能需要重新考虑这是否最适合您。这会在内存中完全读取文件。如果您的应用执行其他操作,那么您可以轻松达到极限。

查看this Cloud Storage Client Libraries 了解更多详情。

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 2016-07-12
    • 2022-01-19
    • 1970-01-01
    • 2015-08-18
    • 2019-10-08
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多