From ec5965f49c928dd9d509f1161ed3ab52fd1a3c6f Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 26 Sep 2022 17:31:37 +0800 Subject: [PATCH] =?UTF-8?q?hutool-extra=20ftp=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E6=88=96=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../main/java/cn/hutool/extra/ftp/Ftp.java | 64 +++++++++---------- .../cn/hutool/extra/ftp/SimpleFtpServer.java | 6 +- 3 files changed, 36 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a01250329..089810afe 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * 【core 】 EnumUtil.getBy增加带默认值重载(issue#I5RZU6@Gitee) * 【core 】 ModifierUtil和ReflectUtil增加removeFinalModify(pr#810@Gitee) * 【core 】 AbsCollValueMap添加removeValue和removeValues方法,用于list value值移除(pr#813@Gitee) +* 【extra 】 hutool-extra ftp 支持上传文件或目录(pr#821@Gitee) ### 🐞Bug修复 * 【core 】 修复FileNameUtil.cleanInvalid无法去除换行符问题(issue#I5RMZV@Gitee) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java index ecee84b4c..c7ef76170 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java @@ -590,38 +590,6 @@ public class Ftp extends AbstractFtp { recursiveUpload(destPath, uploadFile); } - /** - * 递归上传文件(支持目录) - * - * @param destPath 目录路径 - * @param uploadFile 上传文件或目录 - */ - public void recursiveUpload(String destPath, final File uploadFile) { - if (uploadFile.isFile()) { - this.upload(destPath, uploadFile); - return; - } - File[] files = uploadFile.listFiles(); - if (Objects.isNull(files)) { - return; - } - - //第一次只处理文件,防止目录在前面导致先处理子孙目录,而引发文件所在目录不正确 - for (File f : files) { - if (f.isFile()) { - this.upload(destPath, f); - } - } - //第二次只处理目录 - for (File f : files) { - if (f.isDirectory()) { - destPath = destPath + File.separator + f.getName(); - this.mkDirs(destPath); - recursiveUpload(destPath, f); - } - } - } - /** * 下载文件 * @@ -752,4 +720,36 @@ public class Ftp extends AbstractFtp { this.client = null; } } + + /** + * 递归上传文件(支持目录) + * + * @param destPath 目录路径 + * @param uploadFile 上传文件或目录 + */ + private void recursiveUpload(String destPath, final File uploadFile) { + if (uploadFile.isFile()) { + this.upload(destPath, uploadFile); + return; + } + final File[] files = uploadFile.listFiles(); + if (Objects.isNull(files)) { + return; + } + + //第一次只处理文件,防止目录在前面导致先处理子孙目录,而引发文件所在目录不正确 + for (final File f : files) { + if (f.isFile()) { + this.upload(destPath, f); + } + } + //第二次只处理目录 + for (final File f : files) { + if (f.isDirectory()) { + destPath = destPath + "/" + f.getName(); + this.mkDirs(destPath); + recursiveUpload(destPath, f); + } + } + } } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ftp/SimpleFtpServer.java b/hutool-extra/src/main/java/cn/hutool/extra/ftp/SimpleFtpServer.java index ba8d03335..5d0b4c61f 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/ftp/SimpleFtpServer.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ftp/SimpleFtpServer.java @@ -119,10 +119,10 @@ public class SimpleFtpServer { * @return this */ public SimpleFtpServer addAnonymous(String homePath) { - BaseUser user = new BaseUser(); + final BaseUser user = new BaseUser(); user.setName("anonymous"); user.setHomeDirectory(homePath); - List authorities = new ArrayList<>(); + final List authorities = new ArrayList<>(); // 添加用户读写权限 authorities.add(new WritePermission()); user.setAuthorities(authorities); @@ -164,7 +164,7 @@ public class SimpleFtpServer { * @return this */ public SimpleFtpServer setSsl(File keystoreFile, String password) { - SslConfigurationFactory sslFactory = new SslConfigurationFactory(); + final SslConfigurationFactory sslFactory = new SslConfigurationFactory(); sslFactory.setKeystoreFile(keystoreFile); sslFactory.setKeystorePassword(password); return setSsl(sslFactory.createSslConfiguration());