複製程式碼如下:
/**
*
* JAVA作業 FTP下載
* 文件下載。
*
*/
私有無效 ftpDownload()
{
FTPClient ftpClient = null;
輸入流輸入=空;
布林登入標誌 = false;
List<String> list = new ArrayList<String>();
嘗試
{
int defaultPort = CommonsMessage.FTP_DEFAULT_PORT; // 21
int 逾時 = M400Constant.NUM_SIXTY_THOUSAND * M400Constant.NUM_TWO; // 120000
ftpClient = 新的 FTPClient();
ftpClient.setDefaultPort(defaultPort);
ftpClient.setConnectTimeout(超時);
// ftpClient.setSoTimeout(超時);
ftpClient.setDefaultTimeout(超時);
ftpClient.setDataTimeout(超時);
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(登入 scp ftp 是:+ loginFlag);
}
// String ftpDir = SystemConfig.getKey(ftpHangupDir).trim();
如果(ftpClient.changeWorkingDirectory(ftpDir))
{
FTPFile 檔案[] = ftpClient.listFiles(ftpDir);
if (檔!= null && file.length > 0)
{
DEBUGGER.debug(掛起的檔案大小為: + file.length);
for (int i = 0; i < 檔案長度; i++)
{
String fileName = file[i].getName();
ftpClient.setBufferSize(CommonsMessage.ONE_K_BUFFER_SIZE);
// 設定檔案類型(二進位)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
輸入 = ftpClient.retrieveFileStream(檔案名稱);
processInput(ftpClient, 輸入, 列表, 檔名);
// 如果 (downFlag) {
// ftpClient.deleteFile(檔名);
// }
}
}
別的
{
嘗試
{
Thread.sleep(M400Constant.NUM_FIVE_THOUSAND);
}
捕獲(InterruptedException e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.debug(查詢ScpToQuery失敗,e); }
*/
錯誤(無法查詢ScpToQuery,e);
}
}
}
別的
{
DEBUGGER.debug(scp 目錄錯誤);
}
}
捕獲(異常 e)
{
/*
* DEBUGGER.debug(下載檔案失敗,e);
*/
錯誤(下載檔案失敗,e);
}
最後
{
close(輸入,關閉inputStream失敗);
if (ftpClient != null)
{
嘗試
{
刪除檔案(ftpClient,列表);
布爾 logoutFlag = false;
嘗試
{
logoutFlag = ftpClient.logout();
// DEBUGGER.debug(logout : + logoutFlag);
}
捕獲(異常 e)
{
/*
* DEBUGGER.debug(註銷: + logoutFlag);
*/
錯誤(註銷:+ logoutFlag,e);
}
ftpClient=空;
}
捕獲(異常 e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.error(ftp下載失敗, e); }
*/
錯誤(ftp下載失敗,e);
}
// 嘗試 {
// ftpClient.disconnect();
// } catch (IOException e) {
// 如果 (DEBUGGER.isDebugEnable()) {
// DEBUGGER.debug(ftp下載失敗, e);
// }
// }
}
}
}
/**
* 處理ftp對應檔輸入流。
*
* @param ftpClient
* ftp客戶端對象
* @參數輸入
* ftp檔輸入流
* @參數列表
* 處理剩餘的文件列表,用於執行文件刪除使用
* @param 檔名
* 目前處理的檔案名稱
*/
private void processInput(FTPClient ftpClient, InputStream 輸入, List<String> 清單, String 檔名)
{
如果(輸入==空)
{
返回;
}
// 布林 downFlag = CallingService(input);
調用服務(輸入);
嘗試
{
輸入.close();
ftpClient.completePendingCommand();
列表.add(檔名);
}
捕獲(異常 e)
{
/*
* DEBUGGER.debug(ftp下載失敗,e);
*/
錯誤(ftp下載失敗,e);
}
}
}