使用Java App Engine从Google存储桶中读取PlayStore csv审阅文件

时间:2015-06-09 09:16:27

标签: google-app-engine google-cloud-storage

这个问题在我的大部分时间都让我感到难过。

背景

我正在尝试通过自己的Google App Engine Java项目阅读我的应用的Play Store reviews。 现在,我可以使用Google Cloud Storage客户端API(java)获取所有文件的列表。 我还可以读取该存储桶中每个csv文件的元数据并将其打印到日志中:

问题

我根本找不到一种方法来读取实际对象并获取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从Google云端存储中读取文本数据,但它似乎不适用于具有Play商店评论csv文件的存储桶。有人知道我的Google App Engine项目(连接到同一个Google开发者帐户)是否可以读取这些存储桶?

1 个答案:

答案 0 :(得分:0)

使用executeMedia()和parseAsString

解决了这个问题
HttpResponse response = obj.executeMedia();
response.parseAsString(); //works!!