我需要通过 FTP/HTTP 从 Java 获取几个大文件(几个演出)。有没有现成的库(java/命令行工具)方便下载?一些明显的要求是:
- 多连接下载 - 应该能够打开到服务器的多个连接以加速下载(如 FlashGet/GetRight/...)
- 继续下载
编辑- 我真的不想编写这样的库,而是为现有的经过测试的生产级库窃取它(或付费)。rsynch 不相关,因为我需要从 HTTP 和 FTP 站点下载文件,它不适用于内部文件传输。
我需要通过 FTP/HTTP 从 Java 获取几个大文件(几个演出)。有没有现成的库(java/命令行工具)方便下载?一些明显的要求是:
编辑- 我真的不想编写这样的库,而是为现有的经过测试的生产级库窃取它(或付费)。rsynch 不相关,因为我需要从 HTTP 和 FTP 站点下载文件,它不适用于内部文件传输。
HTTP 协议确实支持在偏移量处开始部分下载,但对验证文件的本地部分版本以确保它没有附加到末尾的垃圾(或类似的东西)的支持有限。如果您的环境允许,我建议rsync
使用 --partial 选项。它旨在从命令行支持这种功能。
如果您不能使用 rsync,您可能想尝试使用 Commons-HTTPClient 并利用 Range HTTP 标头下载可管理大小的块。
如果您知道如何在 java 中创建套接字和线程,那就不难了。
首先创建一个请求并读取标头以获取Content-length
标头。然后设计一种策略将您的请求拆分为例如每个请求 500K 的块。然后为每个请求使用一个线程开始说 10 个请求。在每个请求中,您必须定义Range
标头。
恢复下载是存储尚未下载的范围的问题。如果你真的想很好地掌握所使用的协议,我建议你在这里阅读这个 HTTP/1.1 Header Fields RFC 。
但是,如果您正在寻找一种简单的方法 rsync 或 scp 就足够了。