org.apache.commons.net.ftp.FTPClient 的简单用法

(转自新浪 博客)
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPListParseEngine;
import org.apache.commons.net.ftp.FTPReply;




public class FTP {


private String userName; //FTP 登录用户名
private String password; //FTP 登录密码
private String ip; //FTP 服务器地址IP地址
private int port; //FTP 端口
private FTPClient ftpClient = null; //FTP 客户端代理


public FTP(String userName,String password,String ip,int port) {
this.userName = userName;
this.password = password;
this.ip = ip;
this.port = port;
}


public boolean connectServer() {
boolean flag = true;
if (ftpClient == null) {
int reply;
try {
System.out.println("into ftpClient == null");
ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK"); //文件名乱码,默认ISO8859-1,不支持中文
// System.out.println("encoding "+ftpClient.getControlEncoding());
ftpClient.setDefaultPort(port);
ftpClient.connect(ip);
ftpClient.login(userName, password);
System.out.println("Connected to " + ip );
System.out.print(ftpClient.getReplyString());
reply = ftpClient.getReplyCode();
ftpClient.setDataTimeout(120000);

if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
System.err.println("FTP server refused connection.");
flag = false;
}

} catch (SocketException e) {
flag = false;
e.printStackTrace();
System.err.println("登录ftp服务器 " + ip + " 失败,连接超时!");
} catch (IOException e) {
flag = false;
e.printStackTrace();
System.err.println("登录ftp服务器 " + ip + " 失败,FTP服务器无法打开!");
}
}
System.out.println("登陆ftp服务器成功"+ip);
return flag;
}

public void listRemoteAllFiles(String path) {
try {
FTPListParseEngine f = ftpClient.initiateListParsing(path);

while (f.hasNext()) {
FTPFile[] files = f.getNext(5);
for(FTPFile file:files){
disFile(file,path);
}
}

} catch (IOException e) {
e.printStackTrace();
}
}

public void disFile(FTPFile file,String path){
if(file.isDirectory() && !file.getName().equals(".")&& !file.getName().equals("..")){
System.out.println(File.separator + file.getName());
listRemoteAllFiles(path+ File.separator +file.getName());
}else if(!file.getName().equals(".")&& !file.getName().equals("..")){
System.out.println(file.getName());
}
}


public void closeConnect() {
System.out.println("关闭ftp服务器");
try {
if (ftpClient != null) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}

}

public void downFile(String remotePath,String fileName,String localPath) {

FTPFile[] fs;
try {
ftpClient.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
fs = ftpClient.listFiles();
for(FTPFile ff:fs){
if(ff.getName().equals(fileName)){
File localFile = new File(localPath+ File.separator +ff.getName());

FileOutputStream is = new FileOutputStream(localFile);
ftpClient.retrieveFile(ff.getName(), is);
is.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}

}

public void upFile(String path, String filename, String localFilePath){
try {
FileInputStream in=new FileInputStream(new File(localFilePath));
ftpClient.changeWorkingDirectory(path);
ftpClient.storeFile(filename, in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}

}


public static void main(String[] args) {
FTP ftp = new FTP("lixin","008357","192.168.1.79",21);
ftp.connectServer();

ftp.listRemoteAllFiles("/");
// ftp.downFile("/测试报告", "测试报告.mmap", "D:\\development\\workspace\\swing");
// ftp.upFile("/测试报告", "ZIP", "E:\\个人\\save\\zip");
ftp.closeConnect();

}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值