1.定义实体类
项目源码下载: https://pan.baidu.com/s/1eSMpxqq
package com.ftp;
/**
* ftp链接常量
*
*/
public class Ftp {
private String ipAddr;//ip地址
private Integer port;//端口号
private String userName;//用户名
private String pwd;//密码
private String path;//aaa路径
public String getIpAddr() {
return ipAddr;
}
public void setIpAddr(String ipAddr) {
this.ipAddr = ipAddr;
}
public Integer getPort() {
return port;
}
public void setPort(Integer port) {
this.port = port;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
2.编写代码及测试。
package com.ftp;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
public class Test {
private static Logger logger=Logger.getLogger(Test.class);
private static FTPClient ftp;
/**
*
* @param path 上传到ftp服务器哪个路径下
* @param addr 地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @return
* @throws Exception
*/
private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftp.connect(addr,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
return result;
}
/**
* @ new String(file.getName().getBytes("GBK"), "iso-8859-1")解决乱码
* @param file 上传的文件或文件夹
* @throws Exception
*/
private void upload(File file) throws Exception{
if(file.isDirectory()){
ftp.makeDirectory(new String(file.getName().getBytes("GBK"), "iso-8859-1"));
ftp.changeWorkingDirectory(new String(file.getName().getBytes("GBK"), "iso-8859-1"));
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath()+"\\"+files[i] );
if(file1.isDirectory()){
upload(file1);
ftp.changeToParentDirectory();
}else{
File file2 = new File(file.getPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(new String(file2.getName().getBytes("GBK"), "iso-8859-1") ,input);
input.close();
}
}
}else{
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(new String(file2.getName().getBytes("GBK"), "iso-8859-1"), input);
input.close();
}
}
public static void main(String[] args) throws Exception{
Test t = new Test();
t.connect("/xxtest", "123.123.126.13", 21, "wangyu", "123123");
File file = new File("E:/哈哈");
t.upload(file);
System.out.println("ok");
}
}
项目源码下载: https://pan.baidu.com/s/1eSMpxqq