使用Java开发FTPClient,完成文件的上传下载

步骤如下

第一步:导入maven依赖jar包

<dependencies><!--FtpClient所在的包--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.6</version></dependency><!--日志--><dependency>  <groupId>org.slf4j</groupId>  <artifactId>slf4j-log4j12</artifactId>  <version>1.7.2</version>  </dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.8.1</version><scope>test</scope></dependency></dependencies>

第二步:代码实现

 /*** 上传文件到FTP服务器*/@Testpublic void uploadFile() throws IOException {FTPClient ftpClient = new FTPClient();ftpClient.setControlEncoding("UTF-8");   ftpClient.connect("192.168.93.108",2121);   ftpClient.login("admin", "123456");  int replyCode = ftpClient.getReplyCode();   ftpClient.setDataTimeout(120000);ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//设置为二进制文件   if (!FTPReply.isPositiveCompletion(replyCode)) {   ftpClient.disconnect();System.out.println("FTP连接失败");}else {System.out.println("FTP连接成功");}//本地文件流InputStream in = new FileInputStream("F://love.txt");//指定写入目录,注意:假如指定的目录不存在,会直接上传到根目录,假如存在,就上传到指定路径
//      ftpClient.changeWorkingDirectory("test2");//远程文件名String removePath = new String("./test2/love8.txt".getBytes("UTF-8"),"iso-8859-1");  //上传ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);  if(ftpClient.storeFile(removePath, in)){  System.out.println("文件上传成功");}else{  System.out.println("文件上传失败");}//关闭文件流in.close();//关闭连接if (ftpClient != null) {   ftpClient.logout();   ftpClient.disconnect();   } }/*** 从FTP服务器下载文件*/@Testpublic void downLoadFile() throws SocketException, IOException {FTPClient ftpClient = new FTPClient();ftpClient.setControlEncoding("UTF-8");   ftpClient.connect("192.168.93.108",2121);   ftpClient.login("admin", "123456");  int replyCode = ftpClient.getReplyCode();   ftpClient.setDataTimeout(120000);ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//设置为二进制文件if (!FTPReply.isPositiveCompletion(replyCode)) {   ftpClient.disconnect();System.out.println("FTP连接失败");}else {System.out.println("FTP连接成功");}//同理,假如指定不存在的路径,会去根路径下查找
//        ftpClient.changeWorkingDirectory("test2");File file=new File("F://abc4.txt");FileOutputStream fos=new FileOutputStream(file);boolean result = ftpClient.retrieveFile("./test/love6.txt",fos);if(result) {System.out.println("下载成功!");}else {System.out.println("下载失败!");}//关闭文件流fos.close();//关闭连接if (ftpClient != null) {   ftpClient.logout();   ftpClient.disconnect();   }}

注:上面没有对异常做详细的捕获处理。
需要注意,对于ftpClient.changeWorkingDirectory(“path”)这个函数,如果指定的目录不存在,上传的时候会自动上传到根目录下,不会报错;同理,下载的时候,如果指定的目录不存在,也会从根目录下查找并下载该文件,如果根目录下也不存在,才会下载失败!
建议在上传下载的时候,文件名指定为绝对路径,如下:

也可以在上传的时候创建文件夹:

     if (!ftpClient.changeWorkingDirectory(path)) {  if (ftpClient.makeDirectory(path)) {System.out.println("目录创建成功!");ftpClient.changeWorkingDirectory(path);} else {  System.out.println("目录创建失败!");}  }//远程文件名String removePath = new String("love7.txt".getBytes("UTF-8"),"iso-8859-1");//上传ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);if(ftpClient.storeFile(removePath, in)){  System.out.println("文件上传成功");}else{  System.out.println("文件上传失败");}

同一个链接FTP多文件的下载

for("遍历FTP多个路径"){
InputStream in = ftpClient.retrieveFileStream("");
//每下一个文件,需要执行下面的这句话
ftpClient.completePendingCommand();
}

Apache FTPClient上传下载文件相关推荐

  1. ftp上传下载文件详解

    首先导入包 import org.apache.commons.NET.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; FTPCli ...

  2. java 文件上传到ftp_JAVA技术实现上传下载文件到FTP服务器(完整)

    具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于 ...

  3. java ftpclient上传txt文件

    java ftpclient上传txt文件 import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp. ...

  4. ftp上传-下载文件通用工具类,已实测

    话不多说直接上代码 package com.springboot.demo.utils;import lombok.extern.slf4j.Slf4j; import org.apache.comm ...

  5. Java中使用FTPClient上传下载

    转自:http://blog.csdn.net/hbcui1984/article/details/2720204 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文 ...

  6. JavaWeb:上传下载文件

    1. 文件上传概述 1.1 文件上传的作用 例如网络硬盘!就是用来上传下载文件的. 在智联招聘上填写一个完整的简历还需要上传照片呢. 1.2 文件上传对页面的要求 上传文件的要求比较多,需要记一下: ...

  7. HttpClient上传下载文件

    HttpClient上传下载文件 java HttpClient Maven依赖 <dependency><groupId>org.apache.httpcomponents& ...

  8. 上传下载文件实例(vsftp服务器+nginx)

    上传下载文件实例(vsftp服务器+nginx) 页面(上传+下载) <form action="/pic/upload" enctype="multipart/f ...

  9. linux lftp下载目录,linux中使用lftp上传下载文件

    lftp是linux中一款ftp服务器相比windows中的ftp显得要复杂不少了,下面我来总结一下lftp文件上传,文件下载,及文件查找等等相关命令吧. lftp连接的几种方法,最常用的是lftp ...

最新文章

  1. 自己觉得比较好的专业书籍
  2. ActivityRouter
  3. Jmeter使用基础笔记-写一个http请求
  4. php Function split() is deprecated 的解决办法(转)
  5. Passwordless SSH Login
  6. android 仿真翻页动画,Android 两Activity之间动画效果(1)---------翻页效果
  7. 哪些要素会让咱们呈现抑郁症的病症
  8. 主动安全,新华三融合生态之力!
  9. cadence导入dxf文件_DXF如何导入为图纸?
  10. 大数据可视化平台优点在哪
  11. HTML方式显示邮件无法打开,HTML格式的电子邮件不能正确显示
  12. CAPL学习之路-SOME/IP相关函数
  13. 243.STAMP图形界面微生物组分析软件
  14. 学习shell的第二天
  15. azure linux root密码,Azure Linux 云主机使用Root超级用户登录
  16. [CoreBluetooth] API MISUSE: can only accept this command while in the powered on state(iOS蓝牙)
  17. JS将unicode码转中文方法
  18. 【微信小程序】 map 组件 callout 自定义气泡 (实实在在的讲解)
  19. 哈勃望远镜研究员测试区块链的空间数据处理
  20. B站左程云算法视频笔记05

热门文章

  1. 每日优鲜、叮咚买菜上演美股生鲜冰火之歌
  2. 实用教程使用ueditor上传图片加水印
  3. Scala 的数据结构
  4. 关于服务器在处理性能上的几个指标
  5. 人工智能反欺诈三部曲——设备指纹
  6. 关于垃圾分类的社会实践调查
  7. 【Canvas】js用Canvas绘制漩涡螺旋图动画效果
  8. 我心中的未来计算机100字,未来的学校作文100字
  9. 谷歌浏览器的源码分析 13
  10. 关于MATLAB绘制曲面图时z轴必须且矩阵,不可以是向量或标量的问题。以及在x,y的范围不一致该如何表示?