java实用工具类——使用java代码实现ftp上传下载工具类
一、引言
小编最近忙着学习项目构架上的一些技术,把实用的工具类整理下,单独放在一个项目。其他项目需要用直接使用maven依赖一下就可以使用了。项目中需要实现上传多张图片,由于多张图片,又担心并发量大。所以小编做了一个负载均衡,把上传后的图片保存到linux上的ftp中去,不了解linux上的ftp小编后期编写个教程。
二、实现
以下ftp的工具类,前提需要保证你的ftp服务器能够使用ftp客户端连接工具进行上传和下载文件,不然可能会由于种种原因导致上传或下载失败。
小编项目亲测可用的哟!!
先引入jar包
<!-- ftp远程工具 --><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.3</version></dependency>
package com.taotao.model.utils;import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;import java.io.*;/*** ftp上传下载工具类* <p>Title: FtpUtil</p>* @version 1.0*/
public class FtpUtil {/** * Description: 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param basePath FTP服务器基础目录* @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath* @param filename 上传到FTP服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */ public static boolean uploadFile(String host, int port, String username, String password, String basePath,String filePath, String filename, InputStream input) {boolean result = false;FTPClient ftp = new FTPClient();try {int reply;ftp.connect(host, port);// 连接FTP服务器// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器ftp.login(username, password);// 登录reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return result;}//切换到上传目录if (!ftp.changeWorkingDirectory(basePath+filePath)) {//如果目录不存在创建目录String[] dirs = filePath.split("/");String tempPath = basePath;for (String dir : dirs) {if (null == dir || "".equals(dir)) continue;tempPath += "/" + dir;if (!ftp.changeWorkingDirectory(tempPath)) {if (!ftp.makeDirectory(tempPath)) {return result;} else {ftp.changeWorkingDirectory(tempPath);}}}}//设置上传文件的类型为二进制类型ftp.setFileType(FTP.BINARY_FILE_TYPE);//上传文件if (!ftp.storeFile(filename, input)) {return result;}input.close();ftp.logout();result = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return result;}/** * Description: 从FTP服务器下载文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param remotePath FTP服务器上的相对路径 * @param fileName 要下载的文件名 * @param localPath 下载后保存到本地的路径 * @return */ public static boolean downloadFile(String host, int port, String username, String password, String remotePath,String fileName, String localPath) {boolean result = false;FTPClient ftp = new FTPClient();try {int reply;ftp.connect(host, port);// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器ftp.login(username, password);// 登录reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return result;}ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录FTPFile[] fs = ftp.listFiles();for (FTPFile ff : fs) {if (ff.getName().equals(fileName)) {File localFile = new File(localPath + "/" + ff.getName());OutputStream is = new FileOutputStream(localFile);ftp.retrieveFile(ff.getName(), is);is.close();}}ftp.logout();result = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return result;}/*** 测试* @param args*/public static void main(String[] args) {try { /* FileInputStream in=new FileInputStream(new File("/Users/Downloads/test.png"));boolean flag = uploadFile("111.231.31.41", 21, "ftp_test", "test0", "/ftp_data/images","", "holle.jpg", in);*/boolean flag = downloadFile("111.231.31.41", 21, "ftp_test", "testO","/ftp_data/images","test.jpg","/Volumes/H");System.out.println(flag); } catch (Exception e) {e.printStackTrace(); } }
}
java实用工具类——使用java代码实现ftp上传下载工具类相关推荐
- FTP上传下载工具(FlashFXP) v5.5.0 中文版
软件名称: FTP上传下载工具(FlashFXP) 软件语言: 简体中文 授权方式: 免费试用 运行环境: Win 32位/64位 软件大小: 7.4MB 图片预览: 软件简介: FlashFXP 是 ...
- 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:宇的季节 cnblogs.com/chenkeyu/p/80 ...
- c#使用FluentFtp实现一行代码实现ftp上传下载等
一:简介 FluentFTP 是一个完全托管的 .NET 和 .NET Standard 的 FTP 和 FTPS 库,针对速度进行了优化. 它提供了广泛的 FTP 命令.文件上传/下载.SSL/TL ...
- ftp下载工具,ftp上传下载工具使用指南,几款好用的ftp客户端软件推荐
第一款:iis7服务器管理软件 它是一款免费而且专业的ftp多站点管理软件,而且可以实现ftp定时备份的功能.除此之外,它还是一款强大的服务器集成管理器,可以批量管理windows及linux服务器及 ...
- JAVA 文件上传下载工具类
JAVA 文件上传下载工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org. ...
- springboot上传下载文件(4)--上传下载工具类(已封装)
因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...
- java实现的FTP上传下载客户端
org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能: 需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFil ...
- 华为云OBS文件上传下载工具类
Java-华为云OBS文件上传下载工具类 文章目录 Java-华为云OBS文件上传下载工具类 1.华为云obs文件上传下载 2.文件流转MultipartFile 3.File转换为Multipart ...
- ftp. java. jdk_java实现ftp上传下载(jdk1.7以下)
java实现ftp上传下载(jdk1.7以下)完整代码,复制可用 FTP实现代码: package com.util; import java.io.File; import java.io.File ...
- java ftp上传文件_jaVA使用FTP上传下载文件的问题
为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...
最新文章
- 学习Docker从小白到入门
- java分布式学习路线
- datetime模块日期转换和列表sorted排序
- figma下载_搬到Figma对我意味着什么
- P1047 [NOIP2005 普及组] 校门外的树(python3实现)
- Java—CountDownLatch使用详解
- 微信公众平台开发者文档
- python中文字体奇怪_利用python检查 AS400的中文字问题
- MySQL 主主同步配置和主从配置步骤
- 微信小程序使用字体图标
- 电脑html5播放黑屏,电脑看视频黑屏,教您电脑看视频黑屏有声音怎么办
- 工程总承包(EPC)最高投标限价政策解说
- MySQL(零基础)详解之DQL
- 只有VOB文件也可以制作成DVD——用IfoEdit建立IFO篇(最好的方法)
- Kafka安全认证 SASL/PLAINTEXT,账号密码认证
- 如何检查MacBook 电池的循环使用次数及健康度?电池续航的方法
- python输入hello*3_Python快速上手: hello world
- Windows系统设置宽带连接开机自动拨号的方法
- python玩转emoji ????(微信又“偷偷”更新了这个表情)
- 在DreamSpark上从Microsoft获得免费的学生软件