java实现 FTP实现上传、下载

上传

/** 
     * FTP上传单个文件测试 
     */ 
    public static void uploadFtpFile(String hostname,String username,
			 String password,String uploadFilePath,String fileName,String ftpWorkPath) 
					 throws RuntimeException{ 
        FTPClient ftpClient = new FTPClient(); 
        FileInputStream fis = null; 

        try { 
            ftpClient.connect(hostname); 
            ftpClient.login(username, password); 

            File srcFile = new File(uploadFilePath+fileName); 
            fis = new FileInputStream(srcFile); 
            //设置上传目录 
            ftpClient.changeWorkingDirectory("/"+ftpWorkPath); 
            ftpClient.setBufferSize(1024); 
            ftpClient.setControlEncoding("GBK"); 
            
            //设置为被动模式
            ftpClient.enterLocalPassiveMode();
            
            //设置文件类型(二进制) 
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
            ftpClient.storeFile(fileName, fis); 
        } catch (IOException e) { 
            e.printStackTrace(); 
            throw new RuntimeException("FTP客户端出错!", e); 
        } finally { 
            IOUtils.closeQuietly(fis); 
            try { 
                ftpClient.disconnect(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
                throw new RuntimeException("关闭FTP连接发生异常!", e); 
            } 
            logger.info("已上传至FTP服务器路径!");
        } 
    } 

下载

/** 
     * 获取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) throws RuntimeException{  
        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地址可能错误,请正确配置。"); 
            throw new RuntimeException("FTP的IP地址可能错误,请正确配置!", e); 
        } catch (IOException e) {  
            e.printStackTrace();  
            logger.info("FTP的端口错误,请正确配置。");  
            throw new RuntimeException("FTP的端口错误,请正确配置!", e); 
        }  
        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 boolean downloadFtpFile(String ftpHost, String ftpUserName,  
            String ftpPassword, int ftpPort, String ftpPath, String localPath,  
            String fileName) throws RuntimeException{  
    	boolean flag = false;
        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();  
            flag = true;
        } catch (FileNotFoundException e) {  
            logger.error("没有找到" + ftpPath + "文件");  
            e.printStackTrace();  
            throw new RuntimeException("没有找到" + ftpPath + "文件:", e); 
        } catch (SocketException e) {  
            logger.error("连接FTP失败.");  
            e.printStackTrace();  
            throw new RuntimeException("连接FTP失败:", e); 
        } catch (IOException e) {  
            e.printStackTrace();  
            logger.error("文件读取错误。");  
            e.printStackTrace(); 
            throw new RuntimeException("文件读取错误:", e); 
        }  
        return flag;
    }  

测试代码

public static void main(String[] args) {
		//下载
//		FavFTPUtil.downloadFtpFile("192.168.2.133","adks","adconcepts2017",
//				"fileConllect/test","E:\\xcc", "53840afe-0682-4960-84ef-3f3b972a0f12.zip");
		
		FavFTPUtil.uploadFtpFile("192.168.2.133","test","123",
				"E:\\360\\pic\\", "a.txt", 
				"fengWu/");
		
	}

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值