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 4a3295553..388ad521c 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 @@ -100,13 +100,15 @@ public abstract class AbstractFtp implements Closeable { // 目录验证 if (isDir(path)) { return true; - } else { - if (CharUtil.isFileSeparator(path.charAt(path.length() - 1))) { - return false; - } + } + if (CharUtil.isFileSeparator(path.charAt(path.length() - 1))) { + return false; + } + final String fileName = FileUtil.getName(path); + if (".".equals(fileName) || "..".equals(fileName)) { + return false; } // 文件验证 - final String fileName = FileUtil.getName(path); final String dir = StrUtil.removeSuffix(path, fileName); final List names; try { diff --git a/hutool-extra/src/test/java/cn/hutool/extra/ftp/FtpTest.java b/hutool-extra/src/test/java/cn/hutool/extra/ftp/FtpTest.java index 275c6339d..2643931f2 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/ftp/FtpTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/ftp/FtpTest.java @@ -122,14 +122,19 @@ public class FtpTest { @Ignore public void existFtpTest() throws Exception { try (Ftp ftp = new Ftp("127.0.0.1", 21)) { - Console.log(ftp.exist("/test/")); + Console.log(ftp.exist("/test")); Console.log(ftp.exist("/test/")); Console.log(ftp.exist("/test//////")); + Console.log(ftp.exist("/test/..")); + Console.log(ftp.exist("/test/.")); Console.log(ftp.exist("/file1")); Console.log(ftp.exist("/file1/")); Console.log(ftp.exist("///////////")); Console.log(ftp.exist("./")); Console.log(ftp.exist("./file1")); + Console.log(ftp.exist(".")); + Console.log(ftp.exist("./2/3/4/..")); + Console.log(ftp.ls("./2/3/4/..")); Console.log(ftp.pwd()); } }