我应该使用哪个Java FTP客户端库?[关闭]


91

由于我没有收到对最后一个问题的肯定回答。我将尝试自己编写一个Java FTP上传小程序。

我的问题是:“您能推荐一个Java FTP客户端库供我使用吗?”

我希望它是:

  • 稳定
  • 能够处理被动和主动模式
  • 能够提供上传进度信息
  • 如果出了点问题(尤其是上传不成功时),则引发可捕获的异常
  • 便宜/免费使用,最好是开源的

我发现这个 概述了一些库,但由于这篇文章是从2003年,也许一些新的事态发展已经发生了:)

Answers:


56

查看包含FTP实用程序的Apache commons-net。我不敢确定它是否满足您的所有要求,但肯定是免费的!


尽管此信息与问题无关,但已在此处添加了该信息位-只是想将其放置在某处。commons-net FtpClient在2008年最新的2.0版本中仍然缺少IPv6支持(RFC 2438)。但是2.1应该包括在内。他们并不经常释放...
莫里茨2010年

2
@Moritz Both:终于在2010年解决了。请参阅issue.apache.org/jira/browse/NET-288
sleske 2011年

我正在尝试使用建议的FTP库,但是它在网络代理后面产生了问题,有什么建议吗?
Ashish Sharma

2
这个库的速度相当慢,需要更快的库。
汤米·伍

@TommyNg我通过从FTP服务器上删除配额并增加缓冲区大小来解决了速度下降问题。也许可以帮到您。
gouessej '16

17

ftp4j是最好的,就功能和许可证而言:

http://www.sauronsoftware.it/projects/ftp4j/


5
缺点是它不在Maven Central中
yegor256

9
我不明白为什么不将图书馆上传到Maven Central ...这是宗教还是政治决定?
Givenkoa 2014年

2
据我了解,@ gavenkoa将项目上传到Maven Central几乎被迫使用Maven作为构建工具。如果使用ant构建ant(就像ftp4j一样),那么就不那么容易了,我想作者并不在意实现这一点。
圣保罗Ebermann

1
在Java中,通常会使用Maven存储库来收集依赖关系(对于Python是点子,对于Ruby是Gems)。即使在蚂蚁也有常春藤。开发人员可能没有时间或金钱去做上传工作,谁知道呢?
Givenkoa 2015年

@PaŭloEbermann不,可以将Ant用作构建工具并将库上载到Maven Central,这就是我们对JogAmp(JOGL,JOAL,JOCL)所做的工作。而且,您可以拥有自己的Maven存储库,而不用滥用集中化功能,以便尊重我完全理解的一些政治考虑。
gouessej '16

6

是的,EnterpriseDT的edtFTPj是稳定的(于2000年首次发布),具有您可能需要的所有功能,并且也是开源的。

它被用于许多开源项目(以及许多商业项目)中,并且被公认为是周围最快的客户端库之一

如另一位发帖人所述,如果您确实希望升级到SFTP和/或FTPS,这是一条简单的升级路径,几乎不需要更改任何代码。


由于某些IllegalReply异常,我无法获得ftp4j的工作。这个很好用。
anujin

您提到的证明
edtFTPj

2
这个包是不是免费的(和非常昂贵),只要你需要“亲”功能,如通过代理连接...
埃里克·尼古拉斯


4

公网肯定。:)最近大多数开源项目都在使用它。

c


1

我已经成功使用了Enterprise DT FTP库,该库是免费和开源的。我无法将其与其他库(例如Apache Commons Net库)进行比较,因为我没有使用它们。它确实提供了到SFTP(通过SSH)和FTPS(通过SSL)的简单升级路径,尽管这是一种付费商业产品。


1

Apache commons-nets最近得到的更新更加频繁,而Enterprise DT库的更新似乎更加频繁。


0

我正在下载视频文件。Apache的FTPClient失败了,它以相当快的速度下载了视频。但是当我尝试播放视频时,它丢失了视频中间的部分内容。ftp4j会完整下载整个视频。

ftp4j ftw


0

您也可以在2006年这篇文章中列出FTP客户端的不同选项。

commons-net很好,但是FTP-GO可以为您提供一些您正在寻找的更高级的功能。

卡吉Ftp-Go


第一条链接已死
gouessej

1
@gouessej第一个链接没有死。第二个是。我已经恢复了“ FTP-GO”链接。
VonC

1
您说得对,谢谢。您必须支付750USD的费用才能获取此API的源代码:s
gouessej
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.