Java下载管理器

我需要通过FTP / HTTP从Java获得几个巨大的文件(几个演出)。 是否有一个现成的库(java /命令行工具)来方便下载? 一些明显的要求是:

  1. 多连接下载 – 应该能够打开几个连接到服务器以加速下载(如FlashGet / GetRight / …)
  2. 恢复下载

编辑 – 我真的不想写这样的图书馆,而是为现有的测试生产级图书馆窃取(或支付)。 rsynch不相关,因为我需要从HTTP和FTP站点下载文件,它不是用于内部文件传输。

HTTP协议确实支持在偏移处开始部分下载,但是对于validation文件的本地部分版本以确保它没有附加到末尾的垃圾(或类似的东西)的支持有限。 如果您的环境允许,我建议使用–partial选项进行rsync 。 它旨在从命令行支持这种function。

如果您不能使用rsync,您可能希望尝试使用Commons-HTTPClient并使用Range HTTP标头下载可管理大小的块。

如果你知道如何在java中创建套接字和线程,那并不困难。

首先创建一个请求并读取标题以获取Content-length标头。 然后设计一个策略,将您的请求拆分为每个请求500K的块。 然后使用线程为每个请求开始说10个请求。 在每个请求中,您必须定义Range标头。

恢复下载是存储尚未下载的范围的问题。 如果你真的想要很好地掌握所使用的协议,我建议你在这里阅读这个HTTP / 1.1标题字段RFC。

但是,如果你正在寻找一个简单的方法rsync或scp就足够了。