From 9015c3ea0aad0be5606c44d6c5cc9c633d612c39 Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 26 Apr 2025 11:52:17 +0800 Subject: [PATCH] =?UTF-8?q?`AbstractFtp`=E5=A2=9E=E5=8A=A0`rename`?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=88issue#IC3PMI@Gitee=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../main/java/cn/hutool/extra/ftp/AbstractFtp.java | 9 +++++++++ .../src/main/java/cn/hutool/extra/ftp/Ftp.java | 11 +++++++++++ .../src/main/java/cn/hutool/extra/ssh/Sftp.java | 9 +++++++++ .../src/main/java/cn/hutool/extra/ssh/SshjSftp.java | 9 +++++++++ 5 files changed, 39 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b42689d7..c1ed66331 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * 【core 】 增加分段锁实现`SegmentLock`(pr#1330@Gitee) * 【core 】 重载subtractToList方法,提供isLinked选项(pr#3923@Github) * 【extra 】 `TemplateConfig`增加`setUseCache`方法(issue#IC3JRY@Gitee) +* 【extra 】 `AbstractFtp`增加`rename`方法(issue#IC3PMI@Gitee) ### 🐞Bug修复 * 【setting】 修复`Setting`autoLoad可能的加载为空的问题(issue#3919@Github) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ftp/AbstractFtp.java b/hutool-extra/src/main/java/cn/hutool/extra/ftp/AbstractFtp.java index bdf695605..3223ebcf5 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/ftp/AbstractFtp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ftp/AbstractFtp.java @@ -250,6 +250,15 @@ public abstract class AbstractFtp implements Closeable { */ public abstract void recursiveDownloadFolder(String sourcePath, File destDir); + /** + * 重命名文件/目录 + * + * @param from 原路径 + * @param to 目标路径 + * @since 5.8.38 + */ + public abstract void rename(String from, String to); + // ---------------------------------------------------------------------------------------------------------------------------------------- Private method start /** 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 96fbd275e..21cc8368b 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 @@ -726,6 +726,17 @@ public class Ftp extends AbstractFtp { } } + @Override + public void rename(String from, String to) { + try { + if (!client.rename(from, to)) { + throw new FtpException("rename [{}] to [{}] fail", from, to); + } + } catch (IOException e) { + throw new IORuntimeException(e); + } + } + /** * 获取FTPClient客户端对象 * diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java index 412509098..9f47866fd 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java @@ -647,6 +647,15 @@ public class Sftp extends AbstractFtp { } + @Override + public void rename(String from, String to) { + try { + getClient().rename(from, to); + } catch (SftpException e) { + throw new JschRuntimeException(e); + } + } + /** * 获取远程文件 * diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/SshjSftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/SshjSftp.java index 617d11da3..9f6c47e3b 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/SshjSftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/SshjSftp.java @@ -210,6 +210,15 @@ public class SshjSftp extends AbstractFtp { } } + @Override + public void rename(String from, String to) { + try { + sftp.rename(from, to); + } catch (IOException e) { + throw new FtpException(e); + } + } + @Override public void close() { IoUtil.close(this.session);