ftp client的开源实现
首页
http://www.sauronsoftware.it/projects/ftp4j/
下载得到文件
ftp4j-1.3.1.zip
文档库地址
http://www.sauronsoftware.it/projects/ftp4j/manual.php
需要引入的JAR包
<dependency>
<groupId>it.sauronsoftware</groupId>
<artifactId>ftp4j</artifactId>
<version>1.3.1</version>
</dependency>
呵呵,这个JAR是我自己上传到我的MAVEN私服上面滴,其实就是ftp4j-1.3.1.zip里面解开压缩得到的JAR
对于这个东东,也是新鲜而已,参考官方的文档写了个测试,没有测试性能如何,
测试类FtpClientTest.java的全文如下:
package com.sillycat.easyftpclient.client;
import it.sauronsoftware.ftp4j.FTPAbortedException;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferException;
import it.sauronsoftware.ftp4j.FTPException;
import it.sauronsoftware.ftp4j.FTPFile;
import it.sauronsoftware.ftp4j.FTPIllegalReplyException;
import it.sauronsoftware.ftp4j.FTPListParseException;
import java.io.File;
import java.io.IOException;
public class FtpClientTest {
public static void main(String[] args) {
FTPClient client = new FTPClient();
try {
// 连接
client.connect("localhost", 2221);
// 登陆
client.login("admin", "admin");
// 得到当前目录
String dir = client.currentDirectory();
// 列表当前文件
FTPFile[] files = client.list();
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
FTPFile f = files[i];
if (f.getName().equalsIgnoreCase("test1")
&& FTPFile.TYPE_DIRECTORY == f.getType()) {
//如果目录test1已经有了,那么删除它
client.deleteDirectory(dir + "/test1");
break;
}
}
}
// 新增目录test1
client.createDirectory(dir + "/test1");
// 进入目录test1
client.changeDirectory(dir + "/test1");
//返回上级目录
client.changeDirectoryUp();
// 上传图片文件
client.upload(new File("E:\\work\\ftp\\upload\\test2.jpg"),new MyTransferListener());
// 上传压缩文件
client.upload(new File("E:\\work\\ftp\\upload\\test3.rar"),new MyTransferListener());
//改名
client.rename("test2.jpg", "cc.jpg");
//移动位置
client.rename("test3.rar", dir + "/test1/dd.rar");
//下载图片
client.download("cc.jpg", new File("E:\\work\\ftp\\download\\cc.jpg"),new MyTransferListener());
//下载压缩文件
client.download(dir + "/test1/dd.rar", new File("E:\\work\\ftp\\download\\dd.rar"),new MyTransferListener());
//删除FTP服务器上文件
client.deleteFile(dir + "/test1/dd.rar");
// 退出
client.logout();
// 释放连接
client.disconnect(true);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (FTPIllegalReplyException e) {
e.printStackTrace();
} catch (FTPException e) {
e.printStackTrace();
} catch (FTPDataTransferException e) {
e.printStackTrace();
} catch (FTPAbortedException e) {
e.printStackTrace();
} catch (FTPListParseException e1) {
e1.printStackTrace();
}
}
}
下载和上传的时候的监听器MyTransferListener实现FTPDataTransferListener接口
package com.sillycat.easyftpclient.client;
import it.sauronsoftware.ftp4j.FTPDataTransferListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyTransferListener implements FTPDataTransferListener {
private Log log = LogFactory.getLog(getClass());
public void aborted() {
log.info("abort-----------------");
}
public void completed() {
log.info("complete-----------------");
}
public void failed() {
log.info("fail-----------------");
}
public void started() {
log.info("start-----------------");
}
public void transferred(int length) {
log.info("length---------------: " + length);
}
}
首页
http://www.sauronsoftware.it/projects/ftp4j/
下载得到文件
ftp4j-1.3.1.zip
文档库地址
http://www.sauronsoftware.it/projects/ftp4j/manual.php
需要引入的JAR包
<dependency>
<groupId>it.sauronsoftware</groupId>
<artifactId>ftp4j</artifactId>
<version>1.3.1</version>
</dependency>
呵呵,这个JAR是我自己上传到我的MAVEN私服上面滴,其实就是ftp4j-1.3.1.zip里面解开压缩得到的JAR
对于这个东东,也是新鲜而已,参考官方的文档写了个测试,没有测试性能如何,
测试类FtpClientTest.java的全文如下:
package com.sillycat.easyftpclient.client;
import it.sauronsoftware.ftp4j.FTPAbortedException;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferException;
import it.sauronsoftware.ftp4j.FTPException;
import it.sauronsoftware.ftp4j.FTPFile;
import it.sauronsoftware.ftp4j.FTPIllegalReplyException;
import it.sauronsoftware.ftp4j.FTPListParseException;
import java.io.File;
import java.io.IOException;
public class FtpClientTest {
public static void main(String[] args) {
FTPClient client = new FTPClient();
try {
// 连接
client.connect("localhost", 2221);
// 登陆
client.login("admin", "admin");
// 得到当前目录
String dir = client.currentDirectory();
// 列表当前文件
FTPFile[] files = client.list();
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
FTPFile f = files[i];
if (f.getName().equalsIgnoreCase("test1")
&& FTPFile.TYPE_DIRECTORY == f.getType()) {
//如果目录test1已经有了,那么删除它
client.deleteDirectory(dir + "/test1");
break;
}
}
}
// 新增目录test1
client.createDirectory(dir + "/test1");
// 进入目录test1
client.changeDirectory(dir + "/test1");
//返回上级目录
client.changeDirectoryUp();
// 上传图片文件
client.upload(new File("E:\\work\\ftp\\upload\\test2.jpg"),new MyTransferListener());
// 上传压缩文件
client.upload(new File("E:\\work\\ftp\\upload\\test3.rar"),new MyTransferListener());
//改名
client.rename("test2.jpg", "cc.jpg");
//移动位置
client.rename("test3.rar", dir + "/test1/dd.rar");
//下载图片
client.download("cc.jpg", new File("E:\\work\\ftp\\download\\cc.jpg"),new MyTransferListener());
//下载压缩文件
client.download(dir + "/test1/dd.rar", new File("E:\\work\\ftp\\download\\dd.rar"),new MyTransferListener());
//删除FTP服务器上文件
client.deleteFile(dir + "/test1/dd.rar");
// 退出
client.logout();
// 释放连接
client.disconnect(true);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (FTPIllegalReplyException e) {
e.printStackTrace();
} catch (FTPException e) {
e.printStackTrace();
} catch (FTPDataTransferException e) {
e.printStackTrace();
} catch (FTPAbortedException e) {
e.printStackTrace();
} catch (FTPListParseException e1) {
e1.printStackTrace();
}
}
}
下载和上传的时候的监听器MyTransferListener实现FTPDataTransferListener接口
package com.sillycat.easyftpclient.client;
import it.sauronsoftware.ftp4j.FTPDataTransferListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyTransferListener implements FTPDataTransferListener {
private Log log = LogFactory.getLog(getClass());
public void aborted() {
log.info("abort-----------------");
}
public void completed() {
log.info("complete-----------------");
}
public void failed() {
log.info("fail-----------------");
}
public void started() {
log.info("start-----------------");
}
public void transferred(int length) {
log.info("length---------------: " + length);
}
}