| |
Java FTP客户端库的选择 |
|
时间: 2006-06-20 来自:blog |
 |
|
标准
至此,我已经介绍并列出了可用的库。现在,我列出针对于要求评估的每个库的相关标准。我对于每一个标准量化了可能值,和在最后比较矩阵中使用的缩写(粗体)放在一起。
产品支持
库通过产品文档、编译的Java文档、样品代码和一个包括注释和解释的应用程序范例给用户提供支持。附加的支持可通过论坛、邮件列表、一个联系的email地址、或者一个在线故障追踪系统提供给用户。/n软件提供附加的支持是要另外收费的。
一个支持管理员的目的是快速支持的一个重要因素。支持管理员可以是:
·一个志愿者(I)
·一个志愿小组(G)
·一个付费的专家团体提供支持(P)
许可证
对于商业项目来说,产品许可证是从一开始就要考虑的一件重要的事。一些库可以自由的重用在商业产品中,但另一些就不能。GPL(GNU通用公共许可证)是一个强大的、有条件的许可证,然而Apache Software许可证只要求在重用的产品中说明一下。 商业许可证限制了利用库开发工作站编程的数目,但是不限制库本身的分布。
对于非商业的项目来说,许可证更像一个哲学问题,一个免费产品是令人感激的。
许可证可以是:
·商业(C)
·GPL(G)
·免费(F);但是,得检测一个免费许可证的限制条件。
一些库供应商要求提供备选的、限制较少的许可证。
提供的源代码
一个封闭源代码的,黑-盒子的软件库可能是使人生气的。由于下面的原因,提供源代码会让他更方便使用:
·当应用程序代码执行出现故障时,进入库代码资源可帮助你理解库的行为。
·源代码包含有用的注释
·源代码可迅速的调整,以便适应新的需要
·示范的源代码可以检测
寿命
库从他们首次公开发行时已经被测试、修复故障和支持。由于版本数在库中变化。我以最早的公开发行年的该标准为基准。
目录列表支持
检索来自服务器的远程文件信息(名称、尺寸、日期)在多数应用程序中是重要的。FTP协议提供NLST指令检索到文件名;NLST命名被精确的设计以便程序调用。LIST命令提供更多的文件信息;像RFC959注释的那样:"由于文件上的信息可能从系统到系统的广泛的不一致,该信息难以在一个程序中自动使用,但是对于人类用户来说相当有用。"没有其他标准方法检索文件信息;因此,客户端库试图调用LIST响应。但是,这可不是一件容易的事情:既然没有权威性的推荐可用于LIST相应格式,FTP服务器采用了不同的格式:
·Unix类型:drwxr-xr-x 1 user01 ftp 512 Jan 29 23:32 prog
·备选的Unix类型:drwxr-xr-x 1 user01 ftp 512 Jan 29 1997 prog
·备选的Unix类型:drwxr-xr-x 1 1 1 512 Jan 29 23:32 prog
·使用Unix类型的符号链接:lrwxr-xr-x 1 user01 ftp 512 Jan 29 23:32 prog -> prog2000
·Weird Unix类型(用户和小组之间无间距):drwxr-xr-x 1 usernameftp 512 Jan 29 23:32 prog
·MS-DOS类型:01-29-97 11:32PM <DIR> prog
·Macintosh类型:drwxr-xr-x folder 0 Jan 29 23:32 prog
·OS/2类型:0 DIR 01-29-97 23:32 PROG
·Unix类型,其次是MS-DOS类型,是使用最广的格式。
Java FTP客户端库试图理解和自动检测尽可能多的格式。另外,他们提供用于处理不可预知的格式应答的不同备选项:
·一个附加的方法,返回作为一个字符串的原始FTP响应(S)
·一个附加的方法,返回原始字符串集,每行/文件一个字符串(C)
·一个支持可插剖析器的框架(P)
大多数的库捕捉LIST响应并将原始文件信息组织成Java 对象,例如:有了JScape iNet库,下列代码检索并且调用收到的文件信息到一个目录列表中:
java.util.Enumeration files = ftpClient.getDirListing(); while (files.hasMoreElements()) { FtpFile ftpFile = (FtpFile) files.nextElement(); System.out.println(ftpFile.getFilename()); System.out.println(ftpFile.getFilesize()); // etc. other helpful methods are detailed in Javadoc }
"遗留问题解答"部分将进一步讨论目录列表。
|
|
|
|
|
|
|
|