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