我可以下载文件,但我无法复制它的内容。
我正在使用此代码:
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(),第一个字符就可以了。
文件非常小,只有几个字节甚至是空的。
感谢。
答案 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。