我正在尝试列出谷歌驱动器中的文件以及我们的应用程序的大小。下面是我试图获得大小的方式
File file = service.files().get(file.getId()).setFields("size").execute();
file.getSize()
我发现通过此次通话获得的尺寸不正确,因为谷歌驱动器只会填充文件的文件大小,而不是谷歌文档,工作表Get size of file created on Google drive using Google drive api in android
我还尝试通过http GET来确定文件的大小 webContentLink&检查Content-Length标题,如下所示
HttpURLConnection conn = null;
String url = "https://docs.google.com/a/document/d/1Gu7Q2Av2ZokZZyLjqBJHG7idE1dr35VE6rTuSii36_M/edit?usp=drivesdk";
try {
URL urlObj = new URL(url);
conn = (HttpURLConnection) urlObj.openConnection();
conn.setRequestMethod("HEAD");
conn.getInputStream();
System.out.println(conn.getContentLength());
} catch (IOException e) {
e.printStackTrace();
} finally {
conn.disconnect();
}
但在这种情况下,文件大小不正确,因为它非常大
我有什么方法可以确定文件大小吗?
答案 0 :(得分:0)
找到问题的解决方案。对于上传到Google云端硬盘的文件,可以使用file.getSize()调用确定文件大小。对于谷歌应用程序文件,如doc,电子表格等文件.getSize()将返回null,因为他们不会消费驱动器中的任何空间。所以,作为一个hacky方式,我出口作为pdf&确定大小。以下是
的代码try {
Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName("xyz")
.build();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
service.files().export(fileId, "application/pdf")
.executeMediaAndDownloadTo(outputStream);
int fileSize = outputStream.toByteArray().length;
} catch (Exception ex) {
}