我有定期将日志文件放入GCS存储桶(例如gs://my-bucket/log.json
)我想设置一个java进程来处理文件,gzip它们,并将它们移动到我存档文件的单独存储区(即将其移至gs://archived-logs/my-bucket/log.json.gz
)
gsutil cp -z
似乎是我目前唯一可以找到的选项。有没有人使用他们的Java API以可行的方式实现它?
答案 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); }