码农的空间

codding
随笔 - 80, 文章 - 2, 评论 - 65, 阅读 - 23万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

最近学习android开发,写了一个在web服务器下载文件的程序,程序能够下载成功,但是下载下来竟然发现下载的文件和服务器上的文件大小不一致,参考了网上的很多程序,没有发现问题,搞了一夜,终于发现bug,问题出现在往sdcard写入的一段程序:

byte[] buffer = new byte[4*1024];
    while(( is.read(buffer)) != -1){//问题出现在这儿
    //is.read(buffer)不一定正好读入4*1024个字节,测试后发现很少能一次读满buffer,大部分时候是1440字节,不知道什么原因,求教高手!
    os.write(buffer);
}

修改这段程序后(如下所示),运行终于正常,不知道为什么有些网友用上边的程序能运行成功。

1
2
3
4
5
6
byte[] buffer = new byte[4*1024];
int length = 0;
while((length = is.read(buffer)) != -1){
    os.write(buffer,0,length);
    System.out.println(length);
}

努力加载评论中...
点击右上角即可分享
微信分享提示