ftp包 java_对Java的两个FTP包进行比较分析

本文对比分析了Apache Commons Net和Sun.net.ftp两个Java FTP包。Apache Commons Net提供更强大的功能,如FTPFile类,但需要设置classpath并依赖jakarta-oro-2.0.8.jar。示例代码展示了如何使用Apache Commons Net进行文件下载。对于需要强大FTP功能的开发者,Apache Commons Net是推荐选择。
摘要由CSDN通过智能技术生成

2、org.apache.commons.net.ftp.*;

这个包在Jakarta Commons Net library里,现在的最高版本是1.4.1,可以从以下地址下载

http://mirror.vmmatrix.net/apache/jakarta/commons/net/binaries/commons-net-1.4.1.zip

里面包含了打包好的jar,API,及全部的class文件

http://mirror.vmmatrix.net/apache/jakarta/commons/net/source/commons-net-1.4.1-src.zip

这里包含一些例子以及全部的代码

给出一个该包的例子:

...

import org.apache.commons.net.ftp.*;

...

public static void getDataFiles( String server,

String username,

String password,

String folder,

String destinationFolder,

Calendar start,

Calendar end )

{

try

{

// Connect and logon to FTP Server

FTPClient ftp = new FTPClient();

ftp.connect( server );

ftp.login( username, password );

System.out.println("Connected to " +

server + ".");

System.out.print(ftp.getReplyString());

// List the files in the directory

ftp.changeWorkingDirectory( folder );

FTPFile[] files = ftp.listFiles();

System.out.println( "Number of files in dir: " + files.length );

DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT );

for( int i=0; i

{

Date fileDate = files[ i ].getTimestamp().getTime();

if( fileDate.compareTo( start.getTime() ) >= 0 &&

fileDate.compareTo( end.getTime() ) <= 0 )

{

// Download a file from the FTP Server

System.out.print( df.format( files[ i ].getTimestamp().getTime() ) );

System.out.println( "\t" + files[ i ].getName() );

File file = new File( destinationFolder +

File.separator + files[ i ].getName() );

FileOutputStream fos = new FileOutputStream( file );

ftp.retrieveFile( files[ i ].getName(), fos );

fos.close();

file.setLastModified( fileDate.getTime() );

}

}

// Logout from the FTP Server and disconnect

ftp.logout();

ftp.disconnect();

}

catch( Exception e )

{

e.printStackTrace();

}

}

同sun.net.ftp相同,都是先建立FtpClient(注意两包的大小写不同)的实例,然后通过connect()方法连接,login()方法登陆,但是org.apache.commons.net.ftp.*明显比sun.net.ftp功能强大很多。

org.apache.commons.net.ftp.*包将FTP中的file单独出来成为了一个新类FTPFile,还有类FTPFileEntryParser、parse,没有仔细研究,但是从字面来看应该是转化为某种形势的类,有待研究同时这个commons-net-1.4.1.jar包中也提供了FTP服务器,telnet,mail等一系列类库。

org.apache.commons.net.ftp.*包的缺点在于需要设置classpath,并且需要下载jakarta-oro-2.0.8.jar这个包才能运行(如果没有这个包,会在ftp.listFiles()方法后抛出找不到class异常),此包无须在代码中import,只需设置在classpath中即可。下载地址:http://mirror.vmmatrix.net/apache/jakarta/oro/source/jakarta-oro-2.0.8.zip

如果想要强大的FTP服务,那么org.apache.commons.net.ftp.*包应该是你的最好选择,而且也是开源,免费的。

这个包的问题是:使用Jakarta Commons Net library需要在环境变量里面编辑classpath.这是不方便的地方。另外IBM也有提供一个ftp包。大家有兴趣可以搜索一下。

33/3<123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值