前言:
此刻各位老铁们对“java上传文件ftp”大体比较关心,咱们都想要知道一些“java上传文件ftp”的相关文章。那么小编同时在网络上收集了一些有关“java上传文件ftp””的相关文章,希望我们能喜欢,你们一起来了解一下吧!写在前面
FTP是一个文件传输协议,被开发人员广泛用于在互联网中文件传输的一套标准协议。
而我们通常在开发过程中也要通过FTP来搭建文件系统,用于存储系统文件等。
目前正值SpringBoot热潮,所以我们接下来会一起学习一下SpringBoot如何集成FTP,以及相关的FTP组件包,还有其主要提供的几个方法。
当然在这系列文章结尾,我们还会给出确切的FTP操作工具类,算是一些小成果,希望和大家共勉。
FTP相关软件安装
我在此就不介绍如何安装FTP了,但是我可以推荐给大家一些软件作为选择。
Linux版本,推荐使用vsftpd进行搭建FTP,只需要改指定的几个配置,添加上用户即可。
Windows版本,推荐使用Serv-U进行搭建FTP,图形化界面,有中文版,操作起来很简单。
开始集成引入相关jar包
这里我们对FTP相关的组件包使用的是edtFTPj,其实之前很多人都选择的是Java自带的包来实现FTP功能的。
在我们的SpringBoot项目中pom.xml下添加以下依赖。
<dependency> <groupId>com.enterprisedt</groupId> <artifactId>edtFTPj</artifactId> <version>1.5.3</version></dependency>复制代码
更新maven进行引入,然后我们进行下一步。
引入FTPUtils.java和FTPHelper.java
引入两个工具类。
我这里先贡献一下代码,请大家酌情作为参考。
/** * Ftp 工具类 */public class FtpHelper { private FTPClient ftp; public FtpHelper() { } /** * 初始化Ftp信息 * * @param ftpServer ftp服务器地址 * @param ftpPort Ftp端口号 * @param ftpUsername ftp 用户名 * @param ftpPassword ftp 密码 */ public FtpHelper(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) { connect(ftpServer, ftpPort, ftpUsername, ftpPassword); } /** * 连接到ftp * * @param ftpServer ftp服务器地址 * @param ftpPort Ftp端口号 * @param ftpUsername ftp 用户名 * @param ftpPassword ftp 密码 */ public void connect(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) { ftp = new FTPClient(); try { ("UTF-8"); ; ; ; ; ; (ftpUsername, ftpPassword); ; } catch (Exception e) { e.printStackTrace(); ftp = null; } } /** * 更改ftp路径 * * @param ftp * @param dirName * @return */ public boolean checkDirectory(FTPClient ftp, String dirName) { boolean flag; try { ; flag = true; } catch (Exception e) { e.printStackTrace(); flag = false; } return flag; } /** * 断开ftp链接 */ public void disconnect() { try { if () { ; } } catch (Exception e) { e.printStackTrace(); } } /** * 读取ftp文件流 * * @param filePath ftp文件路径 * @return s * @throws Exception */ public InputStream downloadFile(String filePath) throws Exception { InputStream inputStream = null; String fileName = ""; filePath = StringUtils.removeStart(filePath, "/"); int len = filePath.lastIndexOf("/"); if (len == -1) { if (filePath.length() > 0) { fileName = filePath; } else { throw new Exception("没有输入文件路径"); } } else { fileName = filePath.substring(len + 1); String type = filePath.substring(0, len); String[] typeArray = type.split("/"); for (String s : typeArray) { ; } } byte[] data; try { data = ; inputStream = new ByteArrayInputStream(data); } catch (Exception e) { e.printStackTrace(); } return inputStream; } /** * 上传文件到ftp * * @param file 文件对象 * @param filePath 上传的路径 * @throws Exception */ public void uploadFile(File file, String filePath) throws Exception { InputStream inStream = new FileInputStream(file); uploadFile(inStream, filePath); } /** * 上传文件到ftp * * @param inStream 上传的文件流 * @param filePath 上传路径 * @throws Exception */ public void uploadFile(InputStream inStream, String filePath) throws Exception { if (inStream == null) { return; } String fileName = ""; filePath = StringUtils.removeStart(filePath, "/"); int len = filePath.lastIndexOf("/"); if (len == -1) { if (filePath.length() > 0) { fileName = filePath; } else { throw new Exception("没有输入文件路径"); } } else { fileName = filePath.substring(len + 1); String type = filePath.substring(0, len); String[] typeArray = type.split("/"); for (String s : typeArray) { if (!checkDirectory(ftp, s)) { ; } } } (inStream, fileName); } /** * 删除ftp文件 * * @param filePath 文件路径 * @throws Exception */ public void deleteFile(String filePath) throws Exception { String fileName = ""; filePath = StringUtils.removeStart(filePath, "/"); int len = filePath.lastIndexOf("/"); if (len == -1) { if (filePath.length() > 0) { fileName = filePath; } else { throw new Exception("没有输入文件路径"); } } else { fileName = filePath.substring(len + 1); String type = filePath.substring(0, len); String[] typeArray = type.split("/"); for (String s : typeArray) { if (checkDirectory(ftp, s)) { ; } } } ; } /** * 切换目录 * * @param path * @throws Exception */ public void changeDirectory(String path) { if (!ValidateUtils.isEmpty(path)) { try { ; } catch (Exception e) { e.printStackTrace(); } } }}复制代码
/** * Ftp 工具类 */public class FtpHelper { private FTPClient ftp; public FtpHelper() { } /** * 初始化Ftp信息 * * @param ftpServer ftp服务器地址 * @param ftpPort Ftp端口号 * @param ftpUsername ftp 用户名 * @param ftpPassword ftp 密码 */ public FtpHelper(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) { connect(ftpServer, ftpPort, ftpUsername, ftpPassword); } /** * 连接到ftp * * @param ftpServer ftp服务器地址 * @param ftpPort Ftp端口号 * @param ftpUsername ftp 用户名 * @param ftpPassword ftp 密码 */ public void connect(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) { ftp = new FTPClient(); try { ("UTF-8"); ; ; ; ; ; (ftpUsername, ftpPassword); ; } catch (Exception e) { e.printStackTrace(); ftp = null; } } /** * 更改ftp路径 * * @param ftp * @param dirName * @return */ public boolean checkDirectory(FTPClient ftp, String dirName) { boolean flag; try { ; flag = true; } catch (Exception e) { e.printStackTrace(); flag = false; } return flag; } /** * 断开ftp链接 */ public void disconnect() { try { if () { ; } } catch (Exception e) { e.printStackTrace(); } } /** * 读取ftp文件流 * * @param filePath ftp文件路径 * @return s * @throws Exception */ public InputStream downloadFile(String filePath) throws Exception { InputStream inputStream = null; String fileName = ""; filePath = StringUtils.removeStart(filePath, "/"); int len = filePath.lastIndexOf("/"); if (len == -1) { if (filePath.length() > 0) { fileName = filePath; } else { throw new Exception("没有输入文件路径"); } } else { fileName = filePath.substring(len + 1); String type = filePath.substring(0, len); String[] typeArray = type.split("/"); for (String s : typeArray) { ; } } byte[] data; try { data = ; inputStream = new ByteArrayInputStream(data); } catch (Exception e) { e.printStackTrace(); } return inputStream; } /** * 上传文件到ftp * * @param file 文件对象 * @param filePath 上传的路径 * @throws Exception */ public void uploadFile(File file, String filePath) throws Exception { InputStream inStream = new FileInputStream(file); uploadFile(inStream, filePath); } /** * 上传文件到ftp * * @param inStream 上传的文件流 * @param filePath 上传路径 * @throws Exception */ public void uploadFile(InputStream inStream, String filePath) throws Exception { if (inStream == null) { return; } String fileName = ""; filePath = StringUtils.removeStart(filePath, "/"); int len = filePath.lastIndexOf("/"); if (len == -1) { if (filePath.length() > 0) { fileName = filePath; } else { throw new Exception("没有输入文件路径"); } } else { fileName = filePath.substring(len + 1); String type = filePath.substring(0, len); String[] typeArray = type.split("/"); for (String s : typeArray) { if (!checkDirectory(ftp, s)) { ; } } } (inStream, fileName); } /** * 删除ftp文件 * * @param filePath 文件路径 * @throws Exception */ public void deleteFile(String filePath) throws Exception { String fileName = ""; filePath = StringUtils.removeStart(filePath, "/"); int len = filePath.lastIndexOf("/"); if (len == -1) { if (filePath.length() > 0) { fileName = filePath; } else { throw new Exception("没有输入文件路径"); } } else { fileName = filePath.substring(len + 1); String type = filePath.substring(0, len); String[] typeArray = type.split("/"); for (String s : typeArray) { if (checkDirectory(ftp, s)) { ; } } } ; } /** * 切换目录 * * @param path * @throws Exception */ public void changeDirectory(String path) { if (!ValidateUtils.isEmpty(path)) { try { ; } catch (Exception e) { e.printStackTrace(); } } }}复制代码如何使用
public static void main(String[] args) { try { // 从ftp下载文件 FtpHelper ftp = new FtpHelper("127.0.0.1", 21, "root", "123456"); File file = new File("D:\1.doc"); (file, "test/weradsfad2.doc"); ; } catch (Exception e) { e.printStackTrace(); } }
作者:Ijiran
链接:
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
标签: #java上传文件ftp