已知文件的网络地址,例如“http://192.168.3.23/love.mp3” 如何将这个文件分成3份然后多线程下载到本地,最后将文件再整合起来

解决方案 »

  1.   

    1,通过 HTTP 协议,从这个资源的 HTTP 响应头里获得文件大小;
    2,根据线程数量和文件大小,平均分配每个线程中应处理的字节数量;
    3,使用 ByteArrayInputStream 结合其中的 skip 方法从资源中读取数据;
    4,处理完成后将多个 ByteArrayInputStream 读出的 byte[] 写入到文件中。比如,从响应头中获得的文件大小是 10kB,那么启动的线程数量是 10 个,这样每个线程处理 1kB 的数据,
    第一个线程从这个文件的位置 0 处开始读取,第二个线程从这个文件的位置 1k 处开始读取(使用 skip 进
    行定位),依次类推。
      

  2.   

    java讨论QQ 86771654 群希望大家加入一起讨论...一起成长吧......
      

  3.   

    使用 URLConnection 中的 getHeaderFieldInt("Content-Length", 0); 获得资源大小
      

  4.   

    授人以鱼,更要授人以渔。这样不是更好?小弟刚学JAVA半个月,和诸位高手显然不能相提并论,火龙果的原理说的是很清楚,但是你也知道对一个新手来说细节上的处理更是头痛,不明白你为什么后悔。
      

  5.   

    这个涉及 IO 流、HTTP 连接、线程等知识点,要做这个程序的话,可以先去看看这些。至于你要的代码,没空写,自己想办法。
      

  6.   

    这里有个跨平台的下载库,支持HTTP,FTP,HTTPS,多线程下载,还能在手机上跑,挺强的,你可以参考下,有现成的控制台例子
    http://www.easygeteasy.com