JAVA操作 FTP 下載文件

jopen 10年前發布 | 22K 次閱讀 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>

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!