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);
// 設置文件類型(二進制) 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對應文件輸入流。 @param ftpClient ftp客戶端對象 @param input ftp文件輸入流 @param list 處理完畢的文件列表,用于執行文件刪除使用 @param fileName 當前處理的文件名稱 / 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); } } }</pre>