Apache FTPClient上传下载文件
使用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上传下载文件相关推荐
- ftp上传下载文件详解
首先导入包 import org.apache.commons.NET.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; FTPCli ...
- java 文件上传到ftp_JAVA技术实现上传下载文件到FTP服务器(完整)
具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于 ...
- java ftpclient上传txt文件
java ftpclient上传txt文件 import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp. ...
- ftp上传-下载文件通用工具类,已实测
话不多说直接上代码 package com.springboot.demo.utils;import lombok.extern.slf4j.Slf4j; import org.apache.comm ...
- Java中使用FTPClient上传下载
转自:http://blog.csdn.net/hbcui1984/article/details/2720204 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文 ...
- JavaWeb:上传下载文件
1. 文件上传概述 1.1 文件上传的作用 例如网络硬盘!就是用来上传下载文件的. 在智联招聘上填写一个完整的简历还需要上传照片呢. 1.2 文件上传对页面的要求 上传文件的要求比较多,需要记一下: ...
- HttpClient上传下载文件
HttpClient上传下载文件 java HttpClient Maven依赖 <dependency><groupId>org.apache.httpcomponents& ...
- 上传下载文件实例(vsftp服务器+nginx)
上传下载文件实例(vsftp服务器+nginx) 页面(上传+下载) <form action="/pic/upload" enctype="multipart/f ...
- linux lftp下载目录,linux中使用lftp上传下载文件
lftp是linux中一款ftp服务器相比windows中的ftp显得要复杂不少了,下面我来总结一下lftp文件上传,文件下载,及文件查找等等相关命令吧. lftp连接的几种方法,最常用的是lftp ...
最新文章
- 自己觉得比较好的专业书籍
- ActivityRouter
- Jmeter使用基础笔记-写一个http请求
- php Function split() is deprecated 的解决办法(转)
- Passwordless SSH Login
- android 仿真翻页动画,Android 两Activity之间动画效果(1)---------翻页效果
- 哪些要素会让咱们呈现抑郁症的病症
- 主动安全,新华三融合生态之力!
- cadence导入dxf文件_DXF如何导入为图纸?
- 大数据可视化平台优点在哪
- HTML方式显示邮件无法打开,HTML格式的电子邮件不能正确显示
- CAPL学习之路-SOME/IP相关函数
- 243.STAMP图形界面微生物组分析软件
- 学习shell的第二天
- azure linux root密码,Azure Linux 云主机使用Root超级用户登录
- [CoreBluetooth] API MISUSE: can only accept this command while in the powered on state(iOS蓝牙)
- JS将unicode码转中文方法
- 【微信小程序】 map 组件 callout 自定义气泡 (实实在在的讲解)
- 哈勃望远镜研究员测试区块链的空间数据处理
- B站左程云算法视频笔记05