问题:在迅雷下载开始时,此时需要先获取文件大小,然后,迅雷会根据下载的大小创建一个空文件,但这个文件的大小和实际下载大小一致,下载开始之后使用多线程,端点续传下载,文件分段覆盖,请问文件的分段覆盖如何实现,迅雷在下载的时候没有将分段文件分若干个小文件存储,然后在最后合成一个最终的文件,而是在一个文件中覆盖,请问如何实现,类似功能,不能用工具辅助类,需要使用原始的编码,语言:C,C++,Java??????

解决方案 »

  1.   

    网上例子应该很多吧,重要的就是加个头信息Content-Range,告诉从哪里开始下载。
    http://www.it.com.cn/f/edu/058/17/159759.htm自己看看
      

  2.   

    用RandomAccessFile对文件进行随意写入,根据文件大小size和线程数计算每个线程平均要下多少,这样就能用RandomAccessFile.seek(int position);设置开始写入的位置。例如文件大小有100M你开5个线程这个线程数可以配置。那么就是100/5每个线程下载20M,也就是第一个线程从0位置开始写入20M,第二个线程从20M位置开始写入20M就这样一次类推。在实际文件旁边在弄个专门记录每个线程下载的当前进度,以便断点下载
      

  3.   

    RandomAccessFile就是JDK提供的类啊又没用什么第三方的,难不成你连JDK提供的API类都不用自己实现File,如果你能做你就不用学java了
      

  4.   

    你说对了,准备用C实现,你可以看看RandomAccessFile工具类,简单的介绍了下是如何实现的.