我有一个GCS bucket,我可以在其中上传.tar.gz文件。每当有新的文件上传时,Google PUB-SUB都会向Kubernetes Engine中的应用程序发送通知。应用程序具有侦听通知的侦听器,并且必须读取.tar.gz文件。
我已经设置了从GCS到应用程序的主题/订阅通知。当收到通知时,我无法确定如何读取.tar.gz文件。
我试着在下面的代码中读取.tar.gz,但这不是我应该做的。它给出了不可读的字符&我不会解压缩它。我使用的是google-cloud-storage库。
if(map.containsValue("OBJECT_FINALIZE") ){
Storage storage = StorageOptions.newBuilder()
.setProjectId(projectId)
.setCredentials(creaCredentialsProvider.getCredentials()).build().getService();
try(ReadChannel reader = storage.reader(archiveMessage.getBucket(), archiveMessage.getName())){
ByteBuffer bytes = ByteBuffer.allocate(64 * 1024);
while (reader.read(bytes) > 0) {
bytes.flip();
System.out.println((char)bytes.get());
bytes.clear();
}
}
}
我研究了持久性磁盘&代码转换,它看起来并不直接向前看。任何我应该去的方向或代码样本的帮助都是非常感谢的。
发布于 2018-08-15 06:46:04
Google Cloud平台中的代码转换没有提供两级解压缩的功能,特别是对于tar.gz文件。但是,根据此Stackoverflow link中提供的响应,似乎有一种编程方法可以解决此问题。您可以使用tarfile.TarFile.extractfile方法绕过解压缩到磁盘的过程
https://stackoverflow.com/questions/50747689
复制相似问题