通过Java API在GCS(Google云端存储)上压缩文件

时间:2017-01-05 22:40:16

标签: java google-cloud-storage

我有定期将日志文件放入GCS存储桶(例如gs://my-bucket/log.json)我想设置一个java进程来处理文件,gzip它们,并将它们移动到我存档文件的单独存储区(即将其移至gs://archived-logs/my-bucket/log.json.gz

gsutil cp -z似乎是我目前唯一可以找到的选项。有没有人使用他们的Java API以可行的方式实现它?

1 个答案:

答案 0 :(得分:0)

好的,我想我解决了。标准流解决方案在结尾。


    GcsOutputChannel gcsOutputChannel = gcsService.createOrReplace(new GcsFilename("my-bucket", "log.json.gz"),
    new GcsFileOptions.Builder().build());
    GZIPOutputStream outputStream = new GZIPOutputStream(Channels.newOutputStream(gcsOutputChannel));

    GcsInputChannel inputChannel = gcsService
                    .openReadChannel(new GcsFilename("my-bucket", "log.json"), 10000);

    InputStream inStream = Channels.newInputStream(inputChannel);
    byte[] byteArr = new byte[10000];
    while (inStream.read(byteArr) > 0) {
        outputStream.write(byteArr);


    }