您的位置:首页 > 编程语言 > Java开发

JAVA代码实现FTP文件下载

2017-03-07 09:55 501 查看
一、下载commons-net-1.4.1.jar包,放到lib下,并加载到.classpath文件中
二、编写工具类FtpUtil.Java如下

[java] view
plain copy

package common;  

  

import java.io.File;    

import java.io.FileNotFoundException;    

import java.io.FileOutputStream;    

import java.io.IOException;    

import java.io.OutputStream;    

import java.net.SocketException;    

import java.util.Properties;  

import org.apache.log4j.Logger;  

import org.apache.commons.logging.Log;  

import org.apache.commons.logging.LogFactory;  

import org.apache.commons.net.ftp.*;  

  

  

public class FtpUtil {  

  

    private final static Log logger = LogFactory.getLog(FtpUtil.class);  

  

    /** 

     * 获取FTPClient对象 

     * 

     * @param ftpHost 

     *            FTP主机服务器 

     * @param ftpPassword 

     *            FTP 登录密码 

     * @param ftpUserName 

     *            FTP登录用户名 

     * @param ftpPort 

     *            FTP端口 默认为21 

     * @return 

     */  

    public static FTPClient getFTPClient(String ftpHost, String ftpUserName,  

            String ftpPassword, int ftpPort) {  

        FTPClient ftpClient = new FTPClient();  

        try {  

            ftpClient = new FTPClient();  

            ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器  

            ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器  

            if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {  

                logger.info("未连接到FTP,用户名或密码错误。");  

                ftpClient.disconnect();  

            } else {  

                logger.info("FTP连接成功。");  

            }  

        } catch (SocketException e) {  

            e.printStackTrace();  

            logger.info("FTP的IP地址可能错误,请正确配置。");  

        } catch (IOException e) {  

            e.printStackTrace();  

            logger.info("FTP的端口错误,请正确配置。");  

        }  

        return ftpClient;  

    }  

  

    /* 

     * 从FTP服务器下载文件 

     *  

     * @param ftpHost FTP IP地址 

     *  

     * @param ftpUserName FTP 用户名 

     *  

     * @param ftpPassword FTP用户名密码 

     *  

     * @param ftpPort FTP端口 

     *  

     * @param ftpPath FTP服务器中文件所在路径 格式: ftptest/aa 

     *  

     * @param localPath 下载到本地的位置 格式:H:/download 

     *  

     * @param fileName 文件名称 

     */  

    public static void downloadFtpFile(String ftpHost, String ftpUserName,  

            String ftpPassword, int ftpPort, String ftpPath, String localPath,  

            String fileName) {  

  

        FTPClient ftpClient = null;  

  

        try {  

            ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);  

            ftpClient.setControlEncoding("UTF-8"); // 中文支持  

            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);  

            ftpClient.enterLocalPassiveMode();  

            ftpClient.changeWorkingDirectory(ftpPath);  

  

            File localFile = new File(localPath + File.separatorChar + fileName);  

            OutputStream os = new FileOutputStream(localFile);  

            ftpClient.retrieveFile(fileName, os);  

            os.close();  

            ftpClient.logout();  

  

        } catch (FileNotFoundException e) {  

            logger.error("没有找到" + ftpPath + "文件");  

            e.printStackTrace();  

        } catch (SocketException e) {  

            logger.error("连接FTP失败.");  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

            logger.error("文件读取错误。");  

            e.printStackTrace();  

        }  

  

    }  

  

  

  

}  

三、测试代码

假设已经存在一个FTP服务器,登录的用户名和密码为zyf,端口为22,登后的家目录下进入ftpdir目录,下面有一个11.txt文件用于下载测试 

[java] view
plain copy

package scripts.testscript;  

  

import org.testng.annotations.Test;  

  

import common.FtpUtil;  

  

public class FtpDownloadTestScript {  

    @Test  

    public void run() {  

          

        String ftpHost = "192.168.26.132";  

        String ftpUserName = "zyf";  

        String ftpPassword = "zyf";  

        int ftpPort = 21;  

        String ftpPath = "ftpdir/";  

        String localPath = "H:/download";  

        String fileName = "11.txt";  

        FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: