知识大全 Java FTP客户端类库比较
Posted 文件
篇首语:古人学问无遗力,少壮工夫老始成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java FTP客户端类库比较相关的知识,希望对你有一定的参考价值。
Java FTP客户端类库比较 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
「导读」本文介绍了在JAVA中如何使用java现有的可用的库来编写FTP客户端代码 文章比较了一系列详尽的FTP库 从正反两面介绍了每个库 帮助决策者根据自己的需要选择其中最合适的一个 另外 本文解释了当一个库被替换时 fagade 样式如何帮助改变对其的管理 最后作者Jean Pierre Nuet讨论并提出了一些由于缺乏权威规范而引起的问题
我们设想这样一个情形——我们想写一个纯Java的从一个远程计算机上运行的FTP服务器上下载文件的应用程序 我们还希望能够过滤那些供下载的远程文件的基本文件信息如文件名 数据或者文件大小
尽管从头开始写一个FTP协议处理程序是可能的 并且也许很有趣 但这项工作也是困难 漫长并且存在着潜在的危险 因为我们不愿意亲自花时间 精力 或者金钱去写这样的一个处理程序 所以我们转而采用那些已经存在的可重用的组件 并且很多的库存在于万维网(WWW)上 使用FTP客户端库 一个下载文件的程序可以用Java简单地写成这样
FTPClient ftpClient = new FTPClient()
nnect( user pass )
ftpClient download( C \\\\Temp\\\\ README txt )
// Eventually other operations here ……
ftpClient disconnect()
找一个优秀的适合我们需要的java FTP 客户端库并不像看起来那么简单 相反这是一项非常痛苦复杂的工作 首先找到一个FTP客户端库需要一些时间 其次 在我们找到所有的存在的库后 我们该选哪一个呢?每个库都适合不同的需求 这些库在性能上是不等价的 并且它们的设计上有着根本上的差别 每个类库都各具特点并使用不同的术语来描述它们 因而 评价和比较FTP客户端库是一件困难的事情
使用可重用组件是一种值得提倡的方法 但是在这种情况下 刚开始往往是令人气馁的 后来或许有点惭愧 在选择了一个好的FTP库后 其后的工作就非常简单了 按简单的规则来就行了
本文的目的是使选择的过程更简短 容易 有价值 首先我列举了所有的可用的FTP客户端库 然后定义并描述了一系列的FTP客户端库应该在某方面提出的相关标准 最后 我会描述一下这些库的性能等彼此比较的结果 所有的这些都为我们做一个快速的 可靠的 长期的决定提供了所需的东西
FTP 的JDK支持
注释 (RFC )需要FTP的参考规范 SUN微系统在JDK中提供了一个RFC 接口 但是它是内在的 没有正式文档记载的 并且没有提高任何源代码 尽管RFC 目前还没有清楚的说明 它实际上是RFC 的一个公共接口的实现的后续——URL规范 如图 所示
一个RFC 实现在JDK中是作为标准被提供的 它为FTP传输操作完成合适的工作 它是公开的 并有正式文档说明 而且应该提供源代码 我们写出如下语句来使用这个实现
URL url = new URL(ftp://user /README txt type=i)
URLConnection urlc = url openConnection()
InputStream is = urlc getInputStream() // 下载
OutputStream os = urlc getOutputStream() // 上传
FTP客户端的JDK支持严格的遵循标准建议 但是它具有一些缺点
首先 它和第三方FTP类库有着根本的区别 RFC 实现优于RFC 的
第二 大多数台式机的FTP客户端工具中都是基于RFC 实现的 很多的JAVA程序使用这些工具来连接到FTP服务器 由于喜好的原因 这些工具大部分需要采用基于RFC 的库
第三 URL和URLConnection类只是为通讯打开流 SUN的库没有为将原始的FTP服务器的回应信息组织构成更多可用的Java的对象如String File RemoteFile 或 Calendar这些提供任何直接的支持 因此我们必须写更多的代码来将数据写入文件或者生成一个目录表
第四 正如RFC 中的 节所说明的 最优化 FTP URLs要求在每次操作后都要将连接控制关闭 当传输很多小的文件的时候 这是相当不经济的 而且效率相当低 而且 强限制的FTP服务器可能判断这是一个恶意的网络攻击或滥用高层通讯 进而会禁止其进一步的访问
最后 它缺乏一些有用的特征
由于上述的原因 使用一个第三者库是更优越的 下面的就列举出了一些可用的第三者代替方案
库的比较
下面的列表简单的概述了我在本文中比较的库 它们都遵循FTP参考规范 下面我将列举提供者名字和库的名称(斜体字表示的部分) 资源中包含了到每个产品的站点的链接 为了启动对库的使用 我还在本文中论及了主要的FTP客户端类
JScape iNet Factory jscape inet ftp Ftp
/n sofare IP*Works ipworks Ftp
Enterprise Distributed Technologies Java FTP Client Library
ftp FTPClient
IBM alphaWorks FTP Bean Suite
work ftp protocol FTPProtocol
SourceFe JFtp FtpConnection
The Jakarta Project Jakarta Commons/Net
ftp FTPClient
JavaShop JNetBeans jshop jnet FTPClient
Sun JDK ftp FtpClient
Florent Cueto JavaFTP API cqs ftp FTP
Bea Petrovicova jFTP cz dhl ftp Ftp
The Globus Project Java CoG Kit globus io ftp FTPClient
注
在我写本文的同时 IBM正在评估将它的alphaWorks FTP Bean Suite 发布到网上是否合适 但是目前已经取消了所有的用户下载权限
Jakarta Commons/Net 是Savarese NetComponents(不再发展)的一个临时性替代
cha138/Article/program/Java/hx/201311/27085相关参考
Java做的比较完善的FTP连接上传下载文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这是
用Java实现FTP服务器解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! FTP命令
使用Java实现FTP服务器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
PHP如何调用JAVA类库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JAVA是个非常强大的
从Java类库看设计模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多时候对于一个设计来说
JavaBase64类库学习笔记 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JavaBase
Net框架类库中定时器类的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 不论在客户端应用程
知识大全 获取ServerSocket信息的方法及FTP原理
Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发
提升Java桌面客户端程序性能问答 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 提升Java桌
Java获取客户端代码大全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &