最近学习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); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步