【FTP】使用org.apache.commons.net.ftp.FTPClient 实现FTP的上传下载

简介: 在此之前,在项目中加上FTP的架包 第一步:配置FTP服务器的相关配置FtpConfig.java  实体类(配置类) 1 package com.sxd.ftp; 2 3 public class FtpConfig { 4 //主机ip 5 private String FtpHost = "192.

在此之前,在项目中加上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 in
128      * @param out
129      * @param ftpClient
130      */
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     @Test
161     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

 

相关文章
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
1774 3
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
2468 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework 3.5离线安装包合集下载
本文介绍了如何获取和安装.NET Framework运行库离线合集包。用户可通过提供的链接下载安装包,安装过程简单,按提示逐步操作即可完成。安装时可选择所需版本,工具会自动适配架构,无需手动判断,方便高效。
8049 0
|
存储 XML 开发工具
【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
本文介绍了如何在Azure上使用App Service作为反向代理,以自定义域名访问Storage Account。主要内容包括: 1. **设置反向代理**:通过配置`applicationhost.xdt`和`web.config`文件,启用IIS代理功能并设置重写规则。 2. **验证访问**:测试原生URL和自定义域名的访问效果,确保两者均可正常访问Storage Account。 3. **.NET SDK连接**:使用共享访问签名(SAS URL)初始化BlobServiceClient对象,实现通过自定义域名访问存储服务。
347 0
|
数据采集 机器学习/深度学习 Java
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
本文介绍了如何使用Java和Apache HttpComponents库从Facebook获取图像数据。通过设置爬虫代理IP以避免限制,利用HttpClient发送请求,解析HTML找到图像链接,然后下载并保存图片。提供的Java代码示例展示了实现过程,包括创建代理配置、线程池,以及下载图片的逻辑。注意,实际应用需根据Facebook页面结构进行调整。
512 6
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
一款.NET开源、跨平台的DASH/HLS/MSS下载工具
一款.NET开源、跨平台的DASH/HLS/MSS下载工具
436 1
|
Java
Java SpringBoot FTP 上传下载文件
Java SpringBoot FTP 上传下载文件
845 0
|
Apache PHP Windows
apache下载
apache下载
271 1
|
安全 C# 开发者
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
1151 5
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件

推荐镜像

更多