Java FTPClient实现文件上传下载
宗旨
本文介绍FTPClient通过FTP协议,进行文件的上传下载等功能,旨在提升自身能力。同时,对阅读本文的小伙伴提供一定帮助,有错误的地方欢迎指出。如有转载,请标明原文地址。
简介
FTPClient封装了所有必要的功能,以便从一个FTP服务器中存储和检索文件。在用FTPClient做操作前,需要先连接FTP服务器。完成与服务器的交互后,需要切断服务器的连接。由于FTPClient存在状态,所以一个对象不能在并发状态下对服务器操作。如果需要多线程并发操作,可以考虑封装一个FTPClientPool池,方便管理。
maven依赖
<!-- FTPClient客户端依赖 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<!-- log日志依赖 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.11.2</version>
</dependency>
FTPClient常用功能
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.*;
/**
*
* 利用FTPClient连接FTP服务器
*
* @time 2019-06-03
* @vision 1.0.0
*/
public class FTPClientUtil {
private static Logger logger = LogManager.getLogger(FTPClientUtil.class);
/**
* 路径分隔符
*/
private final static String URL_SEPARATOR = "/";
/**
* FTP服务器根路径
*/
private final static String FTP_ROOT_PATH = "/";
/**
* FTP服务器连接超时时间
*/
private final static Integer FTP_SERVER_TIME_OUT = 60 * 1000;
/**
* 文件编码
*/
private final static String FTP_SERVER_CODE = "GB2312";
/**
* 单字节编码
*/
private final static String SINGLE_BYTE_CODE = "iso-8859-1";
/**
* ftp服务器重连次数
*/
priva