【问题标题】:How do I check if a remote directory exists in FTP server?如何检查 FTP 服务器中是否存在远程目录?
【发布时间】:2015-07-26 00:17:10
【问题描述】:

我正在尝试通过指定路径来检查 FTP 服务器中是否存在远程目录,但是当我提供有效的目录名称时,我的代码无法检查。我想检查远程目录是否有效并且它不是文件。这是我的代码:

public static boolean checkDirectoryExists(String file) throws      IOException {
        FTPFile[] files = myClient.listDirectories();
return Arrays.asList(files).contains(file);
}

【问题讨论】:

  • 请访问help center 并阅读有关编写好问题的信息。你用的是什么FTP客户端? file 参数对checkDirectoryExists 的值是多少?您看到什么错误消息、异常或意外行为?您如何知道服务器上存在该目录?到目前为止你做了哪些调试?
  • 你可以看到这是我的第一篇文章。基本上我正在向这个方法发送一个名称,并想检查它是否是目录之一(不是文件)

标签: java ftp apache-commons-net


【解决方案1】:

只需使用循环自己检查每个。使用endsWith()检查是否为相对目录路径。

public static boolean checkDirectoryExists(String file) throws IOException {
    FTPFile[] files = myClient.listDirectories();
    for (FTPFile file : files) {
        if( file.getName().endsWith(file)) return true;
    }
    returns false;
}

【讨论】:

    【解决方案2】:

    我的诀窍是使用 listDirectories(directory)

    • 如果目录存在但为空:返回长度为 0 的数组
    • 如果目录不存在:也返回一个长度 = 0 的数组!!!

    所以我使用 listDirectories(directory+"/..")

    • 如果目录存在:返回一个包含至少一个元素 = 目录的数组
    • 如果目录不存在:返回长度为 0 的数组。

    那就这样吧:

    • FTPFile[] tf = listDirectories(directory+"/..")
    • 存在 = tf !=null && tf.length>0

    【讨论】:

      【解决方案3】:

      您只需要检查 ftpClient.cwd("your Directory Name")

      这将返回整数值

      250 - 如果文件存在

      550 - 如果文件不存在

      例如,

      if(ftpClient.cwd(uploadDirectoryPath)==550){
           System.out.println("Directory Doesn't Exists");
      }else if(ftpClient.cwd(uploadDirectoryPath)==250){
           System.out.println("Directory Exists");
      }else{
           System.out.println("Unknown Status");
      }
      

      【讨论】:

        猜你喜欢
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 2015-01-29
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 2020-03-22
        • 1970-01-01
        相关资源
        最近更新 更多