maven渚濊禆
<!--ftp-->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
宸ュ叿绫?
import java.io.*;
import org.apache.commons.io.IOUtils;
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;
/**
*
* @author XXX 2017-07-07
*
*/
public class FtpUtil {
/**
* 涓嬭浇鏂囦欢
* @param hostname FTP鏈嶅姟鍣ㄥ湴鍧€
* @param port FTP鏈嶅姟鍣ㄧ鍙e彿
* @param username FTP鐧诲綍甯愬彿
* @param password FTP鐧诲綍瀵嗙爜
* @param pathname FTP鏈嶅姟鍣ㄦ枃浠剁洰褰? * @param filename weixinRefund_2017-06-20weixinRefund_2017-06-20weixinRefund_2017-06-20weixinRefund_2017-06-20weixinRefund_2017-06-20
* @param localpath 涓嬭浇鍚庣殑鏂囦欢璺緞
* @return
*/
public static boolean downloadFile(String hostname, int port, String username, String password, String pathname, String filename, String localpath){
boolean flag = false;
FTPClient ftpClient = new FTPClient();
//ftp涓枃缂栫爜鏍煎紡璁剧疆
String LOCAL_CHARSET="GBK";
try {
try {
ftpClient.setConnectTimeout(1000);//杩炴帴鏃堕棿瓒呰繃涓€绉掑嵆涓鸿秴鏃? //杩炴帴FTP鏈嶅姟鍣? ftpClient.connect(hostname, port);
//鐧诲綍FTP鏈嶅姟鍣? ftpClient.login(username, password);
//楠岃瘉FTP鏈嶅姟鍣ㄦ槸鍚︾櫥褰曟垚鍔? int replyCode = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
} catch (Exception e) {
throw new Exception("login ftp error!");
}
//璁剧疆ftp缂栫爜鏍煎紡
ftpClient.setControlEncoding(LOCAL_CHARSET);
//鍒囨崲FTP鐩綍
pathname=new String(pathname.getBytes("GBK"),"iso-8859-1");//濡傛灉鐩綍鍚嶆湁涓枃鍒欏仛缂栫爜鏍煎紡杞崲
if (!ftpClient.changeWorkingDirectory(pathname)) {// 濡傛灉涓嶈兘杩涘叆dir涓嬶紝璇存槑姝ょ洰褰曚笉瀛樺湪锛?
System.out.println("鍒涘缓鏂囦欢鐩綍銆?+pathname+"銆?澶辫触锛?);
return flag;
}
FTPFile[] ftpFiles = ftpClient.listFiles();
for(FTPFile file : ftpFiles){
if(filename.equalsIgnoreCase(file.getName())){
file.setName(new String(file.getName().getBytes("GBK"),"iso-8859-1"));//濡傛灉鏂囦欢鍚嶅悕鏈変腑鏂囧垯鍋氱紪鐮佹牸寮忚浆鎹? File localFile = new File(localpath);
OutputStream os = new FileOutputStream(localFile);
ftpClient.retrieveFile(file.getName(), os);
os.close();
}
}
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally{
if(ftpClient.isConnected()){
try {
ftpClient.logout();
} catch (IOException e) {
}
}
}
return flag;
}
/**
* 涓婁紶鏂囦欢锛堝彲渚汚ction/Controller灞備娇鐢級
* @param hostname FTP鏈嶅姟鍣ㄥ湴鍧€
* @param port FTP鏈嶅姟鍣ㄧ鍙e彿
* @param username FTP鐧诲綍甯愬彿
* @param password FTP鐧诲綍瀵嗙爜
* @param pathname FTP鏈嶅姟鍣ㄤ繚瀛樼洰褰? * @param fileName 涓婁紶鍒癋TP鏈嶅姟鍣ㄥ悗鐨勬枃浠跺悕绉? * @param inputStream 杈撳叆鏂囦欢娴? * @return
*/
public static boolean uploadFile(String hostname, int port, String username, String password, String pathname, String fileName, InputStream inputStream){
boolean flag = false;
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("UTF-8");
try {
try {
ftpClient.setConnectTimeout(1000);//杩炴帴鏃堕棿瓒呰繃涓€绉掑嵆涓鸿秴鏃? //杩炴帴FTP鏈嶅姟鍣? ftpClient.connect(hostname, port);
//鐧诲綍FTP鏈嶅姟鍣? ftpClient.login(username, password);
//楠岃瘉FTP鏈嶅姟鍣ㄦ槸鍚︾櫥褰曟垚鍔? int replyCode = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
} catch (Exception e) {
throw new Exception("connect ftp error!");
}
//pathname=new String(pathname.getBytes("UTF-8"),"iso-8859-1");//濡傛灉鐩綍鍚嶆湁涓枃鍒欏仛缂栫爜鏍煎紡杞崲
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
if (!ftpClient.changeWorkingDirectory(pathname)) {// 濡傛灉涓嶈兘杩涘叆dir涓嬶紝璇存槑姝ょ洰褰曚笉瀛樺湪锛?
if (!ftpClient.makeDirectory(pathname)) {
System.out.println("鍒涘缓鏂囦欢鐩綍銆?+pathname+"銆?澶辫触锛?);
}
}
ftpClient.enterLocalPassiveMode();
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally{
if(ftpClient.isConnected()){
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
/**
* 涓婁紶鏂囦欢锛堝彲瀵规枃浠惰繘琛岄噸鍛藉悕锛? * @param hostname FTP鏈嶅姟鍣ㄥ湴鍧€
* @param port FTP鏈嶅姟鍣ㄧ鍙e彿
* @param username FTP鐧诲綍甯愬彿
* @param password FTP鐧诲綍瀵嗙爜
* @param pathname FTP鏈嶅姟鍣ㄤ繚瀛樼洰褰? * @param filename 涓婁紶鍒癋TP鏈嶅姟鍣ㄥ悗鐨勬枃浠跺悕绉? * @param originfilename 寰呬笂浼犳枃浠剁殑鍚嶇О锛堢粷瀵瑰湴鍧€锛? * @return
*/
public static boolean uploadFileFromProduction(String hostname, int port, String username, String password, String pathname, String filename, String originfilename){
boolean flag = false;
try {
InputStream inputStream = new FileInputStream(new File(originfilename));
flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream);
System.out.println(flag);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 涓婁紶鏂囦欢锛堜笉鍙互杩涜鏂囦欢鐨勯噸鍛藉悕鎿嶄綔锛? * @param hostname FTP鏈嶅姟鍣ㄥ湴鍧€
* @param port FTP鏈嶅姟鍣ㄧ鍙e彿
* @param username FTP鐧诲綍甯愬彿
* @param password FTP鐧诲綍瀵嗙爜
* @param pathname FTP鏈嶅姟鍣ㄤ繚瀛樼洰褰? * @param originfilename 寰呬笂浼犳枃浠剁殑鍚嶇О锛堢粷瀵瑰湴鍧€锛? * @return
*/
public static boolean uploadFileFromProduction(String hostname, int port, String username, String password, String pathname, String originfilename){
boolean flag = false;
try {
String fileName = new File(originfilename).getName();
InputStream inputStream = new FileInputStream(new File(originfilename));
flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream);
System.out.println(flag);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 鍒犻櫎鏂囦欢
* @param hostname FTP鏈嶅姟鍣ㄥ湴鍧€
* @param port FTP鏈嶅姟鍣ㄧ鍙e彿
* @param username FTP鐧诲綍甯愬彿
* @param password FTP鐧诲綍瀵嗙爜
* @param pathname FTP鏈嶅姟鍣ㄤ繚瀛樼洰褰? * @param filename 瑕佸垹闄ょ殑鏂囦欢鍚嶇О
* @return
*/
public static boolean deleteFile(String hostname, int port, String username, String password, String pathname, String filename){
boolean flag = false;
FTPClient ftpClient = new FTPClient();
try {
try {
ftpClient.setConnectTimeout(1000);//杩炴帴鏃堕棿瓒呰繃涓€绉掑嵆涓鸿秴鏃? //杩炴帴FTP鏈嶅姟鍣? ftpClient.connect(hostname, port);
//鐧诲綍FTP鏈嶅姟鍣? ftpClient.login(username, password);
//楠岃瘉FTP鏈嶅姟鍣ㄦ槸鍚︾櫥褰曟垚鍔? int replyCode = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
} catch (Exception e) {
throw new Exception("login ftp error!");
}
//鍒囨崲FTP鐩綍
ftpClient.changeWorkingDirectory(pathname);
ftpClient.dele(filename);
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally{
if(ftpClient.isConnected()){
try {
ftpClient.logout();
} catch (IOException e) {
}
}
}
return flag;
}
private FTPClient newFtpClient(String host, String user, String pwd) throws Exception {
FTPClient ftp = new FTPClient();
//ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
int reply;
ftp.connect(host);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
throw new Exception("Exception in connecting to FTP Server");
}
ftp.login(user, pwd);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
return ftp;
}
/**
* 鏍规嵁鍦板潃鐩存帴鑾峰彇鏂囦欢鍐呭
* @param absp
* @return
*/
public byte[] getFile(String absp,String Host,String Username,String Password) {
byte[] ret = null;
try {
FTPClient ftp = newFtpClient(Host, Username, Password);
InputStream is = ftp.retrieveFileStream(absp);
if (is != null) {
ret = IOUtils.toByteArray(is);
is.close();
}else{
System.out.println("鎵句笉鍒版枃浠?);
}
} catch (Exception e) {
ret = null;
}
return ret;
}
//鍙互灏嗚幏鍙栫殑byte[] 杞崲鍩巄ase64瀛楃涓? Base64.getEncoder().encode(ret)
}
聽