这个问题在我的大部分时间都让我感到难过。
背景
我正在尝试通过自己的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开发者帐户)是否可以读取这些存储桶?
答案 0 :(得分:0)
使用executeMedia()和parseAsString
解决了这个问题HttpResponse response = obj.executeMedia();
response.parseAsString(); //works!!