From 4852d67bed70c1ed81a4545823106d928157ee04 Mon Sep 17 00:00:00 2001 From: yebukong Date: Wed, 31 Aug 2022 12:54:35 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8DisDir=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=94=B9=E5=8F=98pwd=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/extra/ftp/AbstractFtp.java | 7 ++++++- .../src/test/java/cn/hutool/extra/ftp/FtpTest.java | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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 052e79de6..bdf7d657a 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 @@ -73,7 +73,12 @@ public abstract class AbstractFtp implements Closeable { * @since 5.7.5 */ public boolean isDir(String dir) { - return cd(dir); + final String workDir = pwd(); + try { + return cd(dir); + } finally { + cd(workDir); + } } /** 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 2b8cbc425..3bed1d027 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 @@ -90,4 +90,14 @@ public class FtpTest { FileUtil.file("d:/test/download/" + name)); } } + + @Test + @Ignore + public void isDirTest() throws Exception { + try (Ftp ftp = new Ftp("127.0.0.1", 21)) { + Console.log(ftp.pwd()); + ftp.isDir("/test"); + Console.log(ftp.pwd()); + } + } } From feb62498fdd45322295e6f336ad1cd1b5a87518f Mon Sep 17 00:00:00 2001 From: yebukong Date: Wed, 31 Aug 2022 12:57:56 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dexist=E5=88=86=E9=9A=94?= =?UTF-8?q?=E7=AC=A6=E7=BB=93=E5=B0=BE=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/extra/ftp/AbstractFtp.java | 10 ++++++ .../java/cn/hutool/extra/ftp/FtpTest.java | 33 +++++++++++++++++++ 2 files changed, 43 insertions(+) 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 bdf7d657a..4a3295553 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 @@ -2,6 +2,7 @@ package cn.hutool.extra.ftp; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; @@ -96,6 +97,15 @@ public abstract class AbstractFtp implements Closeable { * @return 是否存在 */ public boolean exist(String path) { + // 目录验证 + if (isDir(path)) { + return true; + } else { + if (CharUtil.isFileSeparator(path.charAt(path.length() - 1))) { + return false; + } + } + // 文件验证 final String fileName = FileUtil.getName(path); final String dir = StrUtil.removeSuffix(path, fileName); final List names; 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 3bed1d027..275c6339d 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 @@ -100,4 +100,37 @@ public class FtpTest { Console.log(ftp.pwd()); } } + + @Test + @Ignore + public void existSftpTest() throws Exception { + try (Sftp ftp = new Sftp("127.0.0.1", 22, "test", "test")) { + Console.log(ftp.pwd()); + Console.log(ftp.exist("/home/test")); + Console.log(ftp.exist("/home/test/")); + Console.log(ftp.exist("/home/test//////")); + Console.log(ftp.exist("/home/test/file1")); + Console.log(ftp.exist("/home/test/file1/")); + Console.log(ftp.exist("///////////")); + Console.log(ftp.exist("./")); + Console.log(ftp.exist("./file1")); + Console.log(ftp.pwd()); + } + } + + @Test + @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("/file1")); + Console.log(ftp.exist("/file1/")); + Console.log(ftp.exist("///////////")); + Console.log(ftp.exist("./")); + Console.log(ftp.exist("./file1")); + Console.log(ftp.pwd()); + } + } } From f279b4a9acc8e6733325fd4593cc6f519a19f751 Mon Sep 17 00:00:00 2001 From: yebukong Date: Wed, 31 Aug 2022 14:14:08 +0800 Subject: [PATCH 3/5] =?UTF-8?q?ftp.exist=E5=88=86=E6=94=AF=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/hutool/extra/ftp/AbstractFtp.java | 12 +++++++----- .../src/test/java/cn/hutool/extra/ftp/FtpTest.java | 7 ++++++- 2 files changed, 13 insertions(+), 6 deletions(-) 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()); } } From e0559ec96cfc0ee6ef32125cbd2d23ce199c184a Mon Sep 17 00:00:00 2001 From: yebukong Date: Fri, 2 Sep 2022 17:40:45 +0800 Subject: [PATCH 4/5] =?UTF-8?q?ftp.exist=E7=A9=BA=E5=80=BC=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/extra/ftp/AbstractFtp.java | 3 +++ .../src/test/java/cn/hutool/extra/ftp/FtpTest.java | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) 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 388ad521c..d79294931 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 @@ -97,6 +97,9 @@ public abstract class AbstractFtp implements Closeable { * @return 是否存在 */ public boolean exist(String path) { + if (StrUtil.isBlank(path)) { + return false; + } // 目录验证 if (isDir(path)) { return true; 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 2643931f2..06580a73e 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,6 +122,11 @@ public class FtpTest { @Ignore public void existFtpTest() throws Exception { try (Ftp ftp = new Ftp("127.0.0.1", 21)) { + Console.log(ftp.exist(null)); + Console.log(ftp.exist("")); + Console.log(ftp.exist(".")); + Console.log(ftp.exist("..")); + Console.log(ftp.exist("/")); Console.log(ftp.exist("/test")); Console.log(ftp.exist("/test/")); Console.log(ftp.exist("/test//////")); @@ -132,9 +137,7 @@ public class FtpTest { 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()); } } From f9204dc6de3d6562ed107814026befe1ed395df4 Mon Sep 17 00:00:00 2001 From: yebukong Date: Fri, 2 Sep 2022 18:11:07 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E8=B6=8A=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/extra/ftp/AbstractFtp.java | 2 +- .../src/test/java/cn/hutool/extra/ftp/FtpTest.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 d79294931..ffc5bd1b8 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 @@ -112,7 +112,7 @@ public abstract class AbstractFtp implements Closeable { return false; } // 文件验证 - final String dir = StrUtil.removeSuffix(path, fileName); + final String dir = StrUtil.emptyToDefault(StrUtil.removeSuffix(path, fileName), "."); final List names; try { names = ls(dir); 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 06580a73e..6dc04d292 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 @@ -106,6 +106,12 @@ public class FtpTest { public void existSftpTest() throws Exception { try (Sftp ftp = new Sftp("127.0.0.1", 22, "test", "test")) { Console.log(ftp.pwd()); + Console.log(ftp.exist(null)); + Console.log(ftp.exist("")); + Console.log(ftp.exist(".")); + Console.log(ftp.exist("..")); + Console.log(ftp.exist("/")); + Console.log(ftp.exist("a")); Console.log(ftp.exist("/home/test")); Console.log(ftp.exist("/home/test/")); Console.log(ftp.exist("/home/test//////")); @@ -122,11 +128,13 @@ public class FtpTest { @Ignore public void existFtpTest() throws Exception { try (Ftp ftp = new Ftp("127.0.0.1", 21)) { + Console.log(ftp.pwd()); Console.log(ftp.exist(null)); Console.log(ftp.exist("")); Console.log(ftp.exist(".")); Console.log(ftp.exist("..")); Console.log(ftp.exist("/")); + Console.log(ftp.exist("a")); Console.log(ftp.exist("/test")); Console.log(ftp.exist("/test/")); Console.log(ftp.exist("/test//////"));