首先树结构:

public class TreeVo {private String label;private List<TreeVo> children;public TreeVo() {}public TreeVo(String label) {this.label = label;this.children = new ArrayList<>();}public TreeVo(String label, List<TreeVo> children) {this.label = label;this.children = children;}public String getLabel() {return label;}public void setLabel(String label) {this.label = label;}public List<TreeVo> getChildren() {return children;}public void setChildren(List<TreeVo> children) {this.children = children;}@Overridepublic String toString() {return "TreeVo{" +"label='" + label + '\'' +", children=" + children +'}';}
}

然后代码:

/*** 递归获取ftp文件目录树* @param files* @param ftpClient* @param pTree* @return* @throws IOException*/
public TreeVo recursionTree(FTPFile[] files, FTPClient ftpClient, TreeVo pTree) throws IOException {for (FTPFile file : files) {if (file.isDirectory()) {// new String(file.getName().getBytes("UTF-8"),"iso-8859-1")为了将目录名的编码转成FTPClient需要的编码,否则切换目录会失败。boolean flag = ftpClient.changeWorkingDirectory(new String(file.getName().getBytes("UTF-8"),"iso-8859-1"));files = ftpClient.listFiles();if (files.length > 0) {pTree.getChildren().add(recursionTree(files, ftpClient, new TreeVo(file.getName())));} else {pTree.getChildren().add(new TreeVo(file.getName()));}} else {pTree.getChildren().add(new TreeVo(file.getName()));}}// 子文件夹遍历完成后返回上级目录ftpClient.changeToParentDirectory();return pTree;
}

调用方法:

public static void main(){try {FTPClient ftpClient = new FTPClient();ftpClient.connect(ip, port);ftpClient.login(user, pwd);if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {logger.info("未连接到FTP,用户名或密码错误。");ftpClient.disconnect();} else {// 如果ftp连接成功,需要验证路径是否存在ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.enterLocalPassiveMode();ftpClient.setControlEncoding("UTF-8");// 获取根目录文件FTPFile[] files = ftpClient.listFiles(etlFileSource.getFilePath());// 创建根节点TreeVo root = new TreeVo("root");if (files.length > 0) {recursionTree(files, ftpClient, root);}}} catch (SocketException e) {e.printStackTrace();logger.info("FTP的IP地址可能错误,请正确配置。");} catch (IOException e) {e.printStackTrace();logger.info("FTP的端口错误,请正确配置。");} catch (Exception e) {e.printStackTrace();logger.info("查询数据失败。");}
}

递归遍历ftp文件目录,并生成目录树相关推荐

  1. python学习 生成目录树

    第一种最速方式,cmd直接用tree命令,如果还要文件用 tree /f C:\Users\ds>tree d:\9月考勤 > d:\test.xlsC:\Users\ds>tree ...

  2. Windows-tree命令生成目录树

    tree命令生成目录树 2K以上的操作系统中都带有tree命令,98下面没有,就算是把2K下面的拷过去也用不起来. tree命令的格式是tree [drive][path] [/F] [/A] /F ...

  3. tree命令生成目录树

    tree命令生成目录树 1. tree背景 2. tree安装 3. tree说明 4. tree使用 1. tree背景 在项目设计文档时经常需要对项目结构进行说明,如果能生成目录树结构则是对项目结 ...

  4. oracle 生成目录树,根据路径列和标题列生成目录树 - Foxtable 中文帮助文档

    根据路径列和标题列生成目录树 有的时候,目录树要根据两列内容生成,一列指定路径,一列指定标题,根据两列内容生成目录树需要使用GenerateTree方法. 语法: GenerateTree(DataT ...

  5. Python生成目录树

    1.CMD生成目录树 1.1 查看帮助 1.2 作用 1.3 命令格式 2.Python生成目录树 2.1 标准库pathlib介绍 2.2 代码实现 2.3 改进,显示指定目录 2.4 改进,保存文 ...

  6. 利用树的先序和后序遍历打印os中的目录树

    [0]README 0.1)本代码均为原创,旨在将树的遍历应用一下下以加深印象而已:(回答了学习树的遍历到底有什么用的问题?)你对比下linux 中的文件树 和我的打印结果就明理了: 0.2)我们采用 ...

  7. oracle 生成目录树,jQuery zTree插件快速实现目录树

    ztree是JQuery的一个开源树形目录的插件,用来快速构建网站的树形目录结构,并且提供了功能丰富,利于扩展的API. JQuery ztree官网 只要引入jquery和ztree的库js,然后给 ...

  8. Linux - tree 生成目录树「Note」

    概览 tree 安装 tree 可选参数 tree 常用参数 win 配置 tree 安装 #Debian apt-get install tree#Ubuntu apt-get install tr ...

  9. C语言实现DOS系统的tree命令,DOS中的Tree命令生成目录树

    [Tree命令作用] 以图形显示驱动器或路径的文件夹结构. [Tree命令格式] 在命令行窗口使用tree /?查看帮助. TREE [drive:][path] [/F] [/A] /F 显示每个文 ...

最新文章

  1. POJ 1679 判断最小树是否唯一
  2. SpringFramework5.0 @Indexed注解 简单解析
  3. P4123-[CQOI2016]不同的最小割【网络流,分治】
  4. java代码防止sql注入_动态Java代码注入
  5. js微信小程序页面左上角返回跳转指定页面
  6. 洛克人红色思考型机器人叫什么_稻船敬二新企划《红色灰烬》 依然是机器人风格...
  7. C语言中.和->区别
  8. Nacos集群部署说明
  9. Python | 常见的反爬及解决方法,值得收藏
  10. java对象创建的细节
  11. 网吧无盘服务器主机 系统,一个网吧无盘系统的安装步骤(新手教程)
  12. 华为ERPS配置步骤
  13. 微信dat文件用什么软件打开方式_2020微信dat文件解密工具怎么获取软件
  14. 差分GPS(differential GPS-DGPS,DGPS)
  15. 解决桌面单击右键反应慢的问题
  16. iOS/iPadOS中Office中文字体显示不正确的解决方法
  17. oracle杀缩表进程,oracle查看锁表和杀死锁表的方法总结
  18. 【高并发】由InterruptedException异常引发的思考
  19. 盘点三款好用的计时器
  20. 数据结构笔记(1)——二叉树的基本概念+存储结构及转化

热门文章

  1. 用Metasploit破解ftp用户名和密码
  2. c语言结构体李云龙张三丰,C语言 有一个错误 求改正
  3. 宇枫资本家庭理财必知的小方法
  4. 为什么越漂亮的女生越没人追?
  5. 一个*泰NL18-20漏电保护器的拆解
  6. ELASTIC 搜索开发实战-笔记
  7. 深度学习之小目标检测
  8. springboot视频API解析
  9. java url特殊字符编码_URL编码和解码Java中的特殊字符 - java
  10. c语言 ——int16,c语言中int取值范围为16位指的是什么16位