当前位置:  编程技术>java/j2ee

java操作ftp下载文件示例

    来源: 互联网  发布时间:2014-11-02

    本文导语:  代码如下:    /**     *      * JAVA操作 FTP 下载     * 文件下载。     *     */    private void ftpDownload()    {        FTPClient ftpClient = null;        InputStream input = null;        boolean loginFlag = false;        List ...

代码如下:

    /**
     *
     * JAVA操作 FTP 下载
     * 文件下载。
     *
     */
    private void ftpDownload()
    {
        FTPClient ftpClient = null;
        InputStream input = null;
        boolean loginFlag = false;
        List list = new ArrayList();
        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 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);
        }
    }
}


    
 
 

您可能感兴趣的文章:

  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程
  • java Servlet实现Session创建存取以及url重写代码示例
  • java 四舍五入使java保留2位小数示例讲解
  • java进行error捕获和处理示例(java异常捕获)
  • java去除集合中重复元素示例分享 java去除重复
  • java读取csv文件示例分享(java解析csv文件)
  • java求三个数的最大值的示例分享
  • java生成字母数字组合的随机数示例 java生成随机数
  • java实现网页解析示例
  • java协变返回类型使用示例
  • 使用java执行定时任务示例
  • java自定义枚举转换器示例
  • java向文件末尾添加内容示例分享
  • java正则表达式获取url的host示例
  • java使用正则表达校验手机号码示例(手机号码正则)
  • java实现jframe透明窗体示例
  • java的split方法使用示例
  • java抓取网页数据示例
  • Oracle 使用Java Source 简单示例
  • java自定义日期转化类示例
  • java操作excel2007文档介绍及代码例子
  • java执行操作系统命令的问题:如何判断多个操作系统?
  • java初学者问:java操作平台是什么?用什么工具?
  • 我是java新手,请问java中与平台相关的操作是怎样实现的
  • Java的XML操作类库 JDOM
  • Java操作系统 JNode
  • Java 操作 Excel 的类库 jExcelApi
  • JAVA与数据库操作问题
  • 请问又没有java控制.exe或操作注册表的方法?
  • Java的Excel操作包 OpenXLS
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • JAVA编译的CLASS文件可以反编译为JAVA文件吗?
  • 保存java.sh文件时,多出一个java.sh~文件
  • 用什么工具可以把JAVA的.CLASS文件反编译成.JAVA文件??
  • 请问把.class文件反编译为.java文件的工具有什么???能恢复到原来的.java文件吗???
  • 一个.java文件中怎样来调用另一个.java文件中的变量及其它东西!
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • java文件复制代码片断(java实现文件拷贝)
  • 我刚学java,想请教一下,我在文本中创建了一个接口,一个类,还有一个扩展类,保存为.java文件时,如何给文件名?
  • 请教:有没有把java编译好的.java和.class文件编译成各个平台下的可执行文件??.exe?着急着急
  • java文件操作之java写文件简单示例
  • java复制文件和java移动文件的示例分享
  • java读取文件内容的三种方法代码片断分享(java文件操作)
  • 编译前的java文件没有,只有class文件
  • 我用java编了一个程序,是多个java文件,属于一个包,需要联编,但我不会
  • 低级问题:.java文件交付用户怎么运行,难道也是DOS下:java xx.java?有没有.exe?
  • 我在jbuilder中新建一个servlet,源程序为java文件,是怎么从java到servler转换的?
  • 求救!!如何在java程序中调用外部非java的exe文件?
  • 谁有办法用java执行于java.exe不在一个目录的class文件?
  • 怎样把CLASS文件转成JAVA文件
  • 不让用户选择文件,程序指定本地文件,Java可以实现上传到服务器吗?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3