如何使用 Apache Commons net FTPS 客户端获取 file/folder 路径

How do I get the file/folder path using Apache Commons net FTPS Client

我正在使用 Apache commons ftps 客户端连接到 ftps 服务器。我有一个目录的远程文件路径。该目录包含子目录和文件树。我想获取每个文件或文件夹的路径。我有什么办法可以得到这个 属性?或者,如果有任何方法可以获得父文件夹路径,我可以将文件名连接到它。

我目前正在使用下面的函数来获取某个目录下所有文件的路径和大小。它获取当前目录中的所有文件并检查它是目录还是文件。如果它是一个目录调用递归直到树的末尾,如果它是一个文件保存路径和大小。您可能不需要这些 "map" 您可以根据需要进行编辑的内容。

用法:

getServerFiles(ftp,"") // start from root

getServerFiles(ftp,"directory_name") // start from given directory

实施:

def getServerFiles(ftp: FTPClient, dir: String): Map[String, Double] = {
    var fileList = Array[FTPFile]()
    var base = ""
    if (dir == "") {
      fileList = ftp.listFiles
    } else {
      base = dir + "/"
      fileList = ftp.listFiles(dir)
    }
    fileList.flatMap {
      x => if (x.isDirectory) {
        getServerFiles(ftp, base + x.getName)
      } else {
        Map[String, Double](base + x.getName -> x.getSize)
      }
    }.toMap
  }