如何将文本/纯文件从Google云端硬盘复制到Android应用本地文件

时间:2013-12-13 20:10:36

标签: android google-drive-api

我可以下载文件,但我无法复制它的内容。

我正在使用此代码:

HttpResponse resp = gDrive.getRequestFactory().buildGetRequest(new GenericUrl(driveFile.getDownloadUrl())).execute();
InputStream in= resp.getContent();
FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
while(in.available()>0) {
    fos.write(in.read());
}

但是in.available()总是返回0.是的,内容就在那里。如果我只使用in.read(),第一个字符就可以了。

文件非常小,只有几个字节甚至是空的。

感谢。

1 个答案:

答案 0 :(得分:1)

请勿使用available()。文档中明确指出available()只会告诉您肯定有多少字节可用,但如果感觉它可能会返回0。

您希望使用read(byte[])将未定义大小的块读取到缓冲区中,直到它返回-1,然后使用write(byte[], int, int)写出相应的字节数 - 类似这样:

byte[] buf = new byte[1024];
while (true) {
    int bytes = in.read(buf);
    if (bytes < 0) break;
    fos.write(buf, 0, bytes);
}

番石榴图书馆provides a function for that