提问者:小点点

使用JavaApp Engine从Google存储桶读取PlayStore csv评论文件


这个问题困扰了我一天的大部分时间。

一、背景

我正在尝试通过我自己的Google App EngineJava项目阅读我的应用程序的Play商店评论。现在我可以使用Google Cloud Storage client api(java)获取所有文件的列表。我还可以读取该存储桶中每个csv文件的meta并将其打印到日志中:

问题

我根本找不到读取实际对象并获取csv数据的方法。我的java代码片段:

BUCKET_NAME = "pubsite_prod_rev_*******";
objectFileName = "reviews/reviews_*****_***.csv"

Storage.Objects.Get obj = client.objects().get(BUCKET_NAME, objectFileName);
InputStream is = obj.executeMediaAsInputStream();

现在,当我打印这个输入流时,它告诉我它的GZIPInputStream(java.util.zip.GZIPInputStream@f0be2c)。将此输入流转换为byte[]或String(所需)不起作用。如果我尝试使用以下方法将其封装在GZIPInputStream对象中:

zis = new GZIPInputStream(is);

它抛出ZipException:不是GZIP格式。

文件的元数据:

"contentType": "text/csv; charset=utf-16le",
"contentEncoding": "gzip",

我做错了什么?

子问题:在过去,我使用GcsService成功地从谷歌云存储中读取文本数据,但它似乎不适用于具有Play商店审查csv文件的存储桶。有人知道我的谷歌应用引擎项目(连接到同一个谷歌开发者帐户)是否可以读取这些存储桶吗?


共1个答案

匿名用户

使用执行媒体()和parseAsString解决了它

HttpResponse response = obj.executeMedia();
response.parseAsString(); //works!!