博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【FTP】使用org.apache.commons.net.ftp.FTPClient 实现FTP的上传下载
阅读量:6120 次
发布时间:2019-06-21

本文共 6455 字,大约阅读时间需要 21 分钟。

在此之前,在项目中加上FTP的架包

 

第一步:配置FTP服务器的相关配置

FtpConfig.java  实体类(配置类)

1 package com.sxd.ftp; 2  3 public class FtpConfig { 4      //主机ip   5     private String FtpHost = "192.168.18.252";   6     //端口号   7     private int FtpPort = 21;   8     //ftp用户名   9     private String FtpUser = "ftp";  10     //ftp密码  11     private String FtpPassword = "agenbiology";  12     //ftp中的目录  这里先指定的根目录13     private String FtpPath = "/";14     15     16     17     public String getFtpHost() {18         return FtpHost;19     }20     public void setFtpHost(String ftpHost) {21         FtpHost = ftpHost;22     }23     public int getFtpPort() {24         return FtpPort;25     }26     public void setFtpPort(int ftpPort) {27         FtpPort = ftpPort;28     }29     public String getFtpUser() {30         return FtpUser;31     }32     public void setFtpUser(String ftpUser) {33         FtpUser = ftpUser;34     }35     public String getFtpPassword() {36         return FtpPassword;37     }38     public void setFtpPassword(String ftpPassword) {39         FtpPassword = ftpPassword;40     }41     public String getFtpPath() {42         return FtpPath;43     }44     public void setFtpPath(String ftpPath) {45         FtpPath = ftpPath;46     }  47     48     49     50 }
View Code

 

第二步:

FtpUtils.java 实现简单的上传下载

1 package com.sxd.ftp;  2   3 import java.io.File;  4 import java.io.FileInputStream;  5 import java.io.FileOutputStream;  6 import java.io.IOException;  7 import java.io.InputStream;  8 import java.io.OutputStream;  9  10 import org.apache.commons.net.ftp.FTPClient; 11 import org.junit.Test; 12  13  14  15 public class FtpUtils { 16      17     /** 18      * 获取FTP连接 19      * @return 20      */ 21     public  FTPClient getFTPClient() { 22         FtpConfig config = new FtpConfig(); 23         FTPClient ftpClient = new FTPClient(); 24         boolean result = true; 25         try { 26             //连接FTP服务器 27             ftpClient.connect(config.getFtpHost(), config.getFtpPort()); 28             //如果连接 29             if (ftpClient.isConnected()) { 30                 //提供用户名/密码登录FTP服务器 31                 boolean flag = ftpClient.login(config.getFtpUser(), config.getFtpPassword()); 32                 //如果登录成功 33                 if (flag) { 34                     //设置编码类型为UTF-8 35                     ftpClient.setControlEncoding("UTF-8"); 36                     //设置文件类型为二进制文件类型 37                     ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 38                 } else { 39                     result = false; 40                 } 41             } else { 42                 result = false; 43             } 44             //成功连接并 登陆成功  返回连接 45             if (result) { 46                 return ftpClient; 47             } else { 48                 return null; 49             } 50         } catch (Exception e) { 51             e.printStackTrace(); 52             return null; 53         } 54     } 55  56      57  58     /** 59      *  60      * @param localPath本地路径 61      * @param fileName文件名 62      * @param newPath上传至FTP的新位置 63      * @return 64      */ 65     public  boolean testUpload(String localPath,String fileName,String newPath) { 66         boolean result = true; 67         FileInputStream in = null; 68         FTPClient ftpClient = getFTPClient(); 69         if (null == ftpClient) { 70             System.out.println("FTP服务器未连接成功!!!"); 71             return false; 72         } 73         try { 74             //当前上传的文件 75             File file = new File(localPath+fileName); 76             in = new FileInputStream(file); 77             //上传至FTP服务器的新位置 78             ftpClient.changeWorkingDirectory(newPath); 79             //上传 80             ftpClient.storeFile(fileName, in); 81             System.out.println(ftpClient.printWorkingDirectory()); 82             return result; 83         } catch (IOException e) { 84             e.printStackTrace(); 85             return false; 86         } finally { 87             close(in, null, ftpClient); 88         } 89     } 90  91     /** 92      * FTP下载 93      * @param fileName  文件名 94      * @param localPath     95      * @param remotePath 96      * @return 97      */ 98     public  boolean testDownload(String localPath,String fileName, String remotePath) { 99         boolean result = true;100         FileOutputStream out = null;101         FTPClient ftpClient = getFTPClient();102         if (null == ftpClient) {103             System.out.println("FTP服务器未连接成功!!!");104             return false;105         }106         try {107             //要写到本地的位置108             File file = new File(localPath + fileName);109             out = new FileOutputStream(file);110             //文件存储在FTP的位置111             ftpClient.changeWorkingDirectory(remotePath);112             //下载文件113             ftpClient.retrieveFile(fileName, out);114             System.out.println(ftpClient.printWorkingDirectory());115             return result;116         } catch (IOException e) {117             e.printStackTrace();118             return false;119         } finally {120             close(null, out, ftpClient);121         }122     }123     124     125     /**126      * 关闭 输入流或输出流127      * @param in128      * @param out129      * @param ftpClient130      */131     public static void close(InputStream in, OutputStream out,FTPClient ftpClient) {132         if (null != in) {133             try {134                 in.close();135             } catch (IOException e) {136                 e.printStackTrace();137                 System.out.println("输入流关闭失败");138             }139         }140         if (null != out) {141             try {142                 out.close();143             } catch (IOException e) {144                 e.printStackTrace();145                 System.out.println("输出流关闭失败");146             }147         }148         if (null != ftpClient) {149             try {150                 ftpClient.logout();151                 ftpClient.disconnect();152             } catch (IOException e) {153                 e.printStackTrace();154                 System.out.println("Ftp服务关闭失败!");155             }156         }157     }158     159     160     @Test161     public void test(){162         FtpConfig config = new FtpConfig();163         //上传文件164 //        testUpload("D:/","new4.txt" , config.getFtpPath());165         //下载166         testDownload("D:/develop/", "new4.txt", config.getFtpPath());167         168         169         170     }171 }
View Code

 

转载地址:http://zuvka.baihongyu.com/

你可能感兴趣的文章
React 整洁代码最佳实践
查看>>
聊聊架构设计做些什么来谈如何成为架构师
查看>>
Java并发编程73道面试题及答案
查看>>
移动端架构的几点思考
查看>>
Tomcat与Spring中的事件机制详解
查看>>
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
网易跟贴这么火,背后的某个力量不可忽视
查看>>
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>