JAVA代码实现FTP文件下载

来源:互联网 发布:跟淘宝一样的购物软件 编辑:程序博客网 时间:2024/05/18 03:57

一、下载commons-net-1.4.1.jar包,放到lib下,并加载到.classpath文件中

二、编写工具类FtpUtil.java如下

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文件用于下载测试 

package scripts.testscript;import org.testng.annotations.Test;import common.FtpUtil;public class FtpDownloadTestScript {@Testpublic 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);}}


0 0
原创粉丝点击