该工具类依赖commons-net-3.1.jar
maven仓库地址:
commons-net
commons-net
3.1
FtpUtil 工具类
package com.xx;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class FtpUtil {
/**
*
* @param ip ftp ip
* @param port ftp port
* @param username ftp 账户
* @param password ftp 密码
* @param path ftp保存路径 , 以 yyyyMMdd 分割保存
* @param filename 保存文件名
* @param input 输入流
* @return
*/
public static boolean uploadFile(String ip, int port,String username, String password, String path, String filename, InputStream input ) {
boolean isOk = false;
FTPClient ftp = new FTPClient();
SimpleDateFormat format = new SimpleDateFormat("yyyMMdd");
String currDate= format.format(new Date());
try {
int reply;
ftp.connect(ip, port);
/**
* 登录
*/
ftp.login(username, password);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return isOk;
}
ftp.changeWorkingDirectory(path);
boolean mkd = true;
FTPFile[] fileLi = ftp.listDirectories();
if(fileLi.length > 0){
for (FTPFile ftpFile : fileLi) {
if(ftpFile.isDirectory() && ftpFile.getName().equals(currDate)){
mkd = false;
break;
}
}
}
//创建文件夹
if(mkd){
ftp.makeDirectory(currDate);
}
ftp.changeWorkingDirectory(currDate);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.storeFile(filename, input);
input.close();
ftp.logout();
isOk = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return isOk;
}
}