diff --git a/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/CommonsFtp.java b/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/CommonsFtp.java index 2ac044a1e..12d92e7ec 100644 --- a/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/CommonsFtp.java +++ b/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/CommonsFtp.java @@ -403,6 +403,15 @@ public class CommonsFtp extends AbstractFtp { return ftpFiles; } + @Override + public boolean rename(String oldPath, String newPath) { + try { + return this.client.rename(oldPath, newPath); + } catch (final IOException e) { + throw new IORuntimeException(e); + } + } + @Override public boolean mkdir(final String dir) throws IORuntimeException { try { diff --git a/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/Ftp.java b/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/Ftp.java index ff0f9e337..bf53c50d9 100644 --- a/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/Ftp.java +++ b/hutool-extra/src/main/java/cn/hutool/v7/extra/ftp/Ftp.java @@ -127,6 +127,15 @@ public interface Ftp extends Closeable { */ List ls(String path); + /** + * 重命名文件 + * + * @param oldPath 旧文件名(或路径) + * @param newPath 新文件名(或路径) + * @return 是否重命名成功 + */ + boolean rename(String oldPath, String newPath); + /** * 删除指定目录下的指定文件 * diff --git a/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/jsch/JschSftp.java b/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/jsch/JschSftp.java index 3d598fd8c..bd220cb2d 100644 --- a/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/jsch/JschSftp.java +++ b/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/jsch/JschSftp.java @@ -328,6 +328,16 @@ public class JschSftp extends AbstractFtp { return entryList; } + @Override + public boolean rename(String oldPath, String newPath) { + try { + getClient().rename(oldPath, newPath); + } catch (final SftpException e) { + throw new SshException(e); + } + return true; + } + @Override public boolean mkdir(final String dir) { if (isDir(dir)) { diff --git a/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/sshj/SshjSftp.java b/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/sshj/SshjSftp.java index 9e86f3742..52125026b 100644 --- a/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/sshj/SshjSftp.java +++ b/hutool-extra/src/main/java/cn/hutool/v7/extra/ssh/engine/sshj/SshjSftp.java @@ -188,6 +188,16 @@ public class SshjSftp extends AbstractFtp { return null; } + @Override + public boolean rename(String oldPath, String newPath) { + try { + sftp.rename(oldPath, newPath); + return containsFile(newPath); + } catch (final IOException e) { + throw new FtpException(e); + } + } + @Override public boolean delFile(final String path) { try {