我正在尝试谷歌云存储;这是我的代码:
File file = new File("mydir" + "/" + fileName);
Storage.Objects.Get get = storage.objects().get("bucketname", fileName);
FileOutputStream stream = new FileOutputStream(file);
get.executeAndDownloadTo(stream);
stream.flush();
stream.close();
下载正在运行(没有收到任何错误或粉碎)我通过设置断点并检查file
对象来检查它。我检查了file.exists()
,其返回true
和file.length()
,返回847
个字节。
但如果我去手机试图访问该文件我找不到;我正在下载的文件是一个图片文件,如果我尝试创建一个位图,我总是得到null。
BitmapFactory.decodeFile(file.getAbsolutePath())
答案 0 :(得分:2)
找到解决方案;所以问题出在这个代码上:
get.executeAndDownloadTo(stream)
由于我不知道的原因,没有完全下载文件。
解决方案:我编写了一个简单的util方法,将输入流逐字节复制到输出流:
public static void copyStream(InputStream is, OutputStream os) throws Exception {
final int buffer_size = 4096;
byte[] bytes = new byte[buffer_size];
for (int count=0;count!=-1;) {
count = is.read(bytes);
if(count != -1) {
os.write(bytes, 0, count);
}
}
os.flush();
is.close();
os.close();
}
致电:
Utils.copyStream(get.executeMediaAsInputStream(), stream);