123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- package com.jjt.common.utils;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.extra.ftp.Ftp;
- import cn.hutool.extra.ftp.FtpMode;
- import com.jjt.common.constant.Constants;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.File;
- import java.util.List;
- /**
- * Ftp上传下载工具类
- *
- * @author wukai
- * @date 2023-06-08
- */
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- public class FtpUtil {
- private static final Logger log = LoggerFactory.getLogger(FtpUtil.class);
- /**
- * FTP服务器IP地址
- */
- private String ip;
- /**
- * FTP服务器端口号
- */
- private Integer port;
- /**
- * FTP服务器用户名
- */
- private String user;
- /**
- * FTP服务器密码
- */
- private String pass;
- /**
- * 远程文件夹目录
- */
- private String dir;
- /**
- * 下载ftp服务器上的文件到本地
- *
- * @param localDir 本地目录
- * @return 成功则返回true
- */
- public Boolean download(String localDir) {
- if (StringUtils.isBlank(localDir)) {
- log.error("本地保存路径及名称不能为空");
- return false;
- }
- if (!dir.endsWith(Constants.DIR_END)) {
- dir += "/";
- }
- if (!localDir.endsWith(Constants.DIR_END)) {
- localDir += "/";
- }
- try (Ftp ftp = new Ftp(ip, port == null ? 21 : port, user, pass)) {
- // 设置传输模式为被动模式(可根据需要修改)
- ftp.setMode(FtpMode.Passive);
- // 获取目录下的文件列表
- List<String> fileList = ftp.ls(dir);
- // 下载目录下的文件
- for (String fileName : fileList) {
- ftp.download(dir + fileName, FileUtil.file(localDir, fileName));
- }
- return true;
- } catch (Exception e) {
- log.error("下载文件失败啦:", e.getMessage());
- return false;
- }
- }
- /**
- * 目录上传至FTP
- *
- * @param localDir 本地目录
- * @return 成功则返回 true
- */
- public Boolean upload(String localDir) {
- if (!dir.endsWith(Constants.DIR_END)) {
- dir += "/";
- }
- if (StringUtils.isBlank(localDir)) {
- log.error("本地文件名称不能为空");
- return false;
- }
- File dirFile = new File(localDir);
- if (dirFile.isDirectory()) {
- try (Ftp ftp = new Ftp(ip, port == null ? 21 : port, user, pass)) {
- // 设置传输模式为被动模式(可根据需要修改)
- ftp.setMode(FtpMode.Passive);
- File[] files = dirFile.listFiles();
- //获取目录下所有文件
- for (File file : files) {
- ftp.upload(dir, file);
- }
- } catch (Exception e) {
- log.error("上传出错啦", e.getMessage());
- return false;
- }
- }
- return true;
- }
- /**
- * 单个文件上传至FTP
- *
- * @param file 要上传的文件
- * @return 成功则返回 true
- */
- public Boolean upload(File file) {
- if (!dir.endsWith(Constants.DIR_END)) {
- dir += "/";
- }
- try (Ftp ftp = new Ftp(ip, port == null ? 21 : port, user, pass)) {
- // 设置传输模式为被动模式(可根据需要修改)
- ftp.setMode(FtpMode.Passive);
- return ftp.upload(dir, file);
- } catch (Exception e) {
- log.error("上传出错啦", e.getMessage());
- return false;
- }
- }
- /**
- * 删除远程服务器上的文件
- *
- * @return 成功则返回 true
- */
- public Boolean delete() {
- if (!dir.endsWith(Constants.DIR_END)) {
- dir += "/";
- }
- try (Ftp ftp = new Ftp(ip, port == null ? 21 : port, user, pass)) {
- // 设置传输模式为被动模式(可根据需要修改)
- ftp.setMode(FtpMode.Passive);
- // 获取目录下的文件列表
- List<String> fileList = ftp.ls(dir);
- // 下载目录下的文件
- for (String fileName : fileList) {
- ftp.delFile(dir + fileName);
- }
- } catch (Exception e) {
- log.error("删除出错啦", e.getMessage());
- return false;
- }
- return true;
- }
- }
|