运维开发网

java操作ftp下载文件示例

运维开发网 https://www.qedev.com 2020-03-10 12:19 出处:网络 作者: 网络整理
复制代码 代码如下:    /**     *      * 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);

        }

    }

}

0

精彩评论

暂无评论...
验证码 换一张
取 消