1回顶部 摘要: 让我们设想这样一个情形--我们想写一个纯Java的从一个远程计算机上运行的FTP服务器上下载文件的应用程序;我们还希望能够过滤那些供下载的远程文件的基本文件信息如文件名、数据或者文件大小。 2回顶部 FTP 的JDK支持 注释959(RFC959)需要FTP的参考规范,SUN微系统在JDK中提供了一个RFC959接口,但是它是内在的、没有正式文档记载的、并且没有提高任何源代码。尽管RFC959目前还没有清楚的说明,它实际上是RFC1738的一个公共接口的实现的后续--URL规范,如图1所示 一个RFC1738实现在JDK中是作为标准被提供的,它为FTP传输操作完成合适的工作。它是公开的,并有正式文档说明,而且应该提供源代码。我们写出如下语句来使用这个实现: URL url = new URL(ftp://user01:pass1234@ftp.foo.com/README.txt;type=i); URLConnection urlc = url.openConnection(); InputStream is = urlc.getInputStream(); // 下载 OutputStream os = urlc.getOutputStream(); // 上传 FTP客户端的JDK支持严格的遵循标准建议,但是它具有一些缺点: 首先,它和第三方FTP类库有着根本的区别,RFC959实现优于RFC1738的; 第二,大多数台式机的FTP客户端工具中都是基于RFC959实现的,很多的JAVA程序使用这些工具来连接到FTP服务器。由于喜好的原因,这些工具大部分需要采用基于RFC959的库。 第三,URL和URLConnection类只是为通讯打开流。SUN的库没有为将原始的FTP服务器的回应信息组织构成更多可用的Java的对象如String, File, RemoteFile, 或 Calendar这些提供任何直接的支持。因此我们必须写更多的代码来将数据写入文件或者生成一个目录表。 第四,正如RFC1738中的3.2.5节所说明的,“最优化”,FTP URLs要求在每次操作后都要将连接控制关闭。当传输很多小的文件的时候,这是相当不经济的,而且效率相当低。而且,强限制的FTP服务器可能判断这是一个恶意的网络攻击或滥用高层通讯,进而会禁止其进一步的访问。 最后,它缺乏一些有用的特征。 由于上述的原因,使用一个第三者库是更优越的。下面的就列举出了一些可用的第三者代替方案: 3回顶部 库的比较: 下面的列表简单的概述了我在本文中比较的库。它们都遵循FTP参考规范,下面我将列举提供者名字和库的名称(斜体字表示的部分),资源中包含了到每个产品的站点的链接。为了启动对库的使用,我还在本文中论及了主要的FTP客户端类。 1. JScape, iNet Factory: com.jscape.inet.ftp.Ftp 2. /n software, IP*Works: ipworks.Ftp 3. Enterprise Distributed Technologies, Java FTP Client Library: com.enterprisedt.net.ftp.FTPClient 4. IBM alphaWorks, FTP Bean Suite: com.ibm.network.ftp.protocol.FTPProtocol 5. SourceForge, JFtp: net.sf.jftp.net.FtpConnection 6. The Jakarta Project, Jakarta Commons/Net: org.apache.commons.net.ftp.FTPClient 7. JavaShop JNetBeans: jshop.jnet.FTPClient 8. Sun, JDK: sun.net.ftp.FtpClient 9. Florent Cueto, JavaFTP API: com.cqs.ftp.FTP 10.Bea Petrovicova, jFTP: cz.dhl.ftp.Ftp 11.The Globus Project, Java CoG Kit: org.globus.io.ftp.FTPClient 注: 1.在我写本文的同时,IBM正在评估将它的alphaWorks FTP Bean Suite 发布到网上是否合适。但是目前已经取消了所有的用户下载权限。 2.Jakarta Commons/Net 是Savarese NetComponents(不再发展)的一个临时性替代。 3.JavaShop JNetBeans似乎被抛弃了,在我写本文的同时,其网站已经有一个多月没有开了,我也从没收到任何对我的请求支持的回讯。 |
正在阅读:Java FTP客户端类库比较Java FTP客户端类库比较
2004-04-19 10:35
出处:Matrix.org.cn
责任编辑:sdq