如何从Android上的Google Cloud Storage下载和保存文件?

时间:2017-06-11 14:48:49

标签: android google-cloud-storage

我正在尝试谷歌云存储;这是我的代码:

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(),其返回truefile.length(),返回847个字节。

但如果我去手机试图访问该文件我找不到;我正在下载的文件是一个图片文件,如果我尝试创建一个位图,我总是得到null。

BitmapFactory.decodeFile(file.getAbsolutePath())

1 个答案:

答案 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);