java操作ftp下載文件示例
/**
*
* JAVA操作 FTP 下載
* 文件下載。
*
*/
private void ftpDownload()
{
FTPClient ftpClient = null;
InputStream input = null;
boolean loginFlag = false;
List<String> list = new ArrayList<String>();
try
{
int defaultPort = CommonsMessage.FTP_DEFAULT_PORT; // 21
int timeout = M400Constant.NUM_SIXTY_THOUSAND * M400Constant.NUM_TWO; // 120000
ftpClient = new FTPClient();
ftpClient.setDefaultPort(defaultPort);
ftpClient.setConnectTimeout(timeout);
// ftpClient.setSoTimeout(timeout);
ftpClient.setDefaultTimeout(timeout);
ftpClient.setDataTimeout(timeout);
ftpClient.setControlEncoding("UTF-8");
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
conf.setServerLanguageCode("en");
conf.setDefaultDateFormatStr("MMM dd HH:mm");
ftpClient.configure(conf);
ftpClient.connect(SystemConfig.getKey("scpFtpIp"));
loginFlag = ftpClient.login(SystemConfig.getKey("scpFtpUserName").trim(),
SystemConfig.getKey("scpFtpPassword").trim());
String ftpDir = SystemConfig.getKey("ftpHangupDir").trim();
if (!loginFlag)
{
DEBUGGER.debug("login scp ftp is :" + loginFlag);
}
// String ftpDir = SystemConfig.getKey("ftpHangupDir").trim();
if (ftpClient.changeWorkingDirectory(ftpDir))
{
FTPFile file[] = ftpClient.listFiles(ftpDir);
if (file != null && file.length > 0)
{
DEBUGGER.debug("hungup file size is: " + file.length);
for (int i = 0; i < file.length; i++)
{
String fileName = file[i].getName();
ftpClient.setBufferSize(CommonsMessage.ONE_K_BUFFER_SIZE);
// 設(shè)置文件類型(二進(jìn)制)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
input = ftpClient.retrieveFileStream(fileName);
processInput(ftpClient, input, list, fileName);
// if (downFlag) {
// ftpClient.deleteFile(fileName);
// }
}
}
else
{
try
{
Thread.sleep(M400Constant.NUM_FIVE_THOUSAND);
}
catch (InterruptedException e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.debug("Failed to queryScpToQuery", e); }
*/
error("Failed to queryScpToQuery", e);
}
}
}
else
{
DEBUGGER.debug("scp dir is error ");
}
}
catch (Exception e)
{
/*
* DEBUGGER.debug("dowonload file is faild ", e);
*/
error("dowonload file is faild ", e);
}
finally
{
close(input, "close inputStream is faild ");
if (ftpClient != null)
{
try
{
deleteFile(ftpClient, list);
boolean logoutFlag = false;
try
{
logoutFlag = ftpClient.logout();
// DEBUGGER.debug("logout : " + logoutFlag);
}
catch (Exception e)
{
/*
* DEBUGGER.debug("logout : " + logoutFlag);
*/
error("logout : " + logoutFlag, e);
}
ftpClient = null;
}
catch (Exception e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.error("Failed to ftpDownload", e); }
*/
error("Failed to ftpDownload", e);
}
// try {
// ftpClient.disconnect();
// } catch (IOException e) {
// if (DEBUGGER.isDebugEnable()) {
// DEBUGGER.debug("Failed to ftpDownload", e);
// }
// }
}
}
}
/**
* 處理ftp對(duì)應(yīng)文件輸入流。
*
* @param ftpClient
* ftp客戶端對(duì)象
* @param input
* ftp文件輸入流
* @param list
* 處理完畢的文件列表,用于執(zhí)行文件刪除使用
* @param fileName
* 當(dāng)前處理的文件名稱
*/
private void processInput(FTPClient ftpClient, InputStream input, List<String> list, String fileName)
{
if (input == null)
{
return;
}
// boolean downFlag = callingService(input);
callingService(input);
try
{
input.close();
ftpClient.completePendingCommand();
list.add(fileName);
}
catch (Exception e)
{
/*
* DEBUGGER.debug("Failed to ftpDownload", e);
*/
error("Failed to ftpDownload", e);
}
}
}
相關(guān)文章
SpringMVC訪問靜態(tài)資源的三種方式小結(jié)
這篇文章主要介紹了SpringMVC訪問靜態(tài)資源的三種方式小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
Java獲取漢字對(duì)應(yīng)的拼音(全拼或首字母)
這篇文章主要介紹了Java如何獲取漢字對(duì)應(yīng)的拼音(全拼或首字母),文中實(shí)現(xiàn)的方法是引用了pinyin4j-2.5.0.jar,然后給出了完整的示例代碼,有需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01
使用ehcache三步搞定springboot緩存的方法示例
本次內(nèi)容主要介紹基于Ehcache 3.0來快速實(shí)現(xiàn)Spring Boot應(yīng)用程序的數(shù)據(jù)緩存功能。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04
java8 集合 多字段 分組 統(tǒng)計(jì)個(gè)數(shù)代碼
這篇文章主要介紹了java8 集合 多字段 分組 統(tǒng)計(jì)個(gè)數(shù)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
java反射遍歷實(shí)體類屬性和類型,并賦值和獲取值的簡(jiǎn)單方法
下面小編就為大家?guī)硪黄猨ava反射遍歷實(shí)體類屬性和類型,并賦值和獲取值的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
Flask實(shí)現(xiàn)異步非阻塞請(qǐng)求功能實(shí)例解析
這篇文章主要介紹了Flask實(shí)現(xiàn)異步非阻塞請(qǐng)求功能實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
記一次Feign中實(shí)現(xiàn)傳實(shí)體Bean的問題
這篇文章主要介紹了記一次Feign中如何傳實(shí)體Bean的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
OpenFeign在傳遞參數(shù)為對(duì)象類型是為空的問題
這篇文章主要介紹了OpenFeign在傳遞參數(shù)為對(duì)象類型是為空的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

