ftp client的开源实现

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);
}

}

你可能感兴趣的:(apache,maven,PHP,F#)