1、[Android开发视频教学]01_18_文件下载,这一集的示例代码有问题。
利用http协议下载任意内容的文件时,因为网络、服务器等等不可知的因素,会造成每次从输入流获取的数据量不确定。所以output.write(buffer)方法不能用了。视频中演示时下载的是本机tomcat服务器上的文件,文件大小没有出现问题。还有在http request的head中设置取消压缩方式可能也是因素之一。
http://www.myext.cn/android/a_819.html
http://m.blog.csdn.net/blog/anyfive/45024221
file = createSDFile(path + "/" + fileName); output = new FileOutputStream(file); byte[] buffer = new byte[4 * 1024]; int count = 0; while((count = input.read(buffer))!= -1){ /* * output.write(buffer)方法会造成下载的文件大小异常, * 因为不是每次都刚刚好读满4K的数据到字节数组buffer中 * 所以要用count存储input.read(buffer)方法返回的实际读取字节数,然后使用
* output.write(buffer, 0, count) 方法来向文件写入刚刚好count个字节的数据 */ output.write(buffer, 0, count); } output.flush();
原文:http://www.cnblogs.com/songshijia88888/p/5043939.html