【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.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

 

时间: 2025-01-31 08:58:12

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

【FTP】org.apache.commons.net.ftp.FTPClient实现复杂的上传下载,操作目录,处理编码

和上一份简单 上传下载一样 来,任何的方法不懂的,http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html API拿走不谢!!!     1.FTP配置实体 1 package com.agen.util; 2 3 public class FtpConfig { 4 //主机ip 5 private String FtpHost = "192.168.18.252

使用Sun的FtpClient做FTP上传下载

001.//使用Sun的FtpClient做FTP上传下载 002.import sun.net.*; 003.import sun.net.ftp.*; 004.import java.io.*; 005.import java.util.*; 006./** 007.FTP远程命令列表<br> 008.USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP    FEAT<br> 009.PASS    PASV

Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题_java

废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String username,String password,String path,String filename,InputStream input) { boolean success=false; FTPClient ftp=new FTPClient();//org.apache.commons.net.ftp

JAVA技术实现上传下载文件到FTP服务器(完整)_java

具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 .之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲

Java通过FTP服务器上传下载文件的方法_java

对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到FileZilla Server都没有该问题,朋友们可以放心使用该代码. FavFTPUtil.Java package com.favccxx.favsoft.util; import jav

EDI中JAVA通过FTP工具实现文件上传下载实例_java

最近接手一个EDI项目,收获颇多.其实我在第一家公司是接触过EDI的,当初我们用EDI主要实现了订单数据传输,客户向我们下达采购订单,通过VPN及FTP工具将采购订单以约定的报文形式放到指定的文件服务器中,然后我们EDI系统会定时去文件服务器中获取报文,最后解析并生成我们的销售订单.这些年过去了,我仍记着当初用的最多的是EDI850.EDI855.  一.首先介绍一下EDI的概念 Electronic data interchange,电子数据交换. EDI其实就是把原来纸质的订单/发货通知等业

从ftp上传下载文件(二)

ftp工具类,供文章(一)中类调用 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import java.util.ArrayList;

java做的比较完善的FTP连接上传下载文件

比较|上传|下载 这是偶第一次写java程序实现公司要求的FTP数据同步,所有原代码如下,以供各位参考并提出宝贵意见!另外俺还有两个功能没有实现,有请高手指点一二:1.如何删除FTP服务器上已经下载过的文件?2.如何将上传的文件改名?上传时在文件名前加"temp_",上传完毕后需要把文件名改回来.3.如何使用openPassiveDataConnection()方法将ftp连接更改为主动连接,因为要从unix系统配置的ftp服务器下载文件的话,就需要主动连接. /***********

ftp上传下载,ftp服务器在windows系统下,web服务器在linux系统下

问题描述 ftp上传下载,ftp服务器在windows系统下,web服务器在linux系统下 哪位大神知道: ftp服务器在搭建windows系统下,web服务器在部署linux系统下,现java中使用ftpclient实现上传下载时,下载的文件内容是乱码: 之前web服务器也部署在windows系统下正常的,后来迁移到linux系统下出现乱码了啊,中文文件名编码正常. 查ftpclient的源码发现读取ftp服务器上文件的编码格式固定了,无法在外部修改,有试着将读取出来的文件转码各种编码方式,