递归遍历ftp文件目录,并生成目录树
首先树结构:
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文件目录,并生成目录树相关推荐
- python学习 生成目录树
第一种最速方式,cmd直接用tree命令,如果还要文件用 tree /f C:\Users\ds>tree d:\9月考勤 > d:\test.xlsC:\Users\ds>tree ...
- Windows-tree命令生成目录树
tree命令生成目录树 2K以上的操作系统中都带有tree命令,98下面没有,就算是把2K下面的拷过去也用不起来. tree命令的格式是tree [drive][path] [/F] [/A] /F ...
- tree命令生成目录树
tree命令生成目录树 1. tree背景 2. tree安装 3. tree说明 4. tree使用 1. tree背景 在项目设计文档时经常需要对项目结构进行说明,如果能生成目录树结构则是对项目结 ...
- oracle 生成目录树,根据路径列和标题列生成目录树 - Foxtable 中文帮助文档
根据路径列和标题列生成目录树 有的时候,目录树要根据两列内容生成,一列指定路径,一列指定标题,根据两列内容生成目录树需要使用GenerateTree方法. 语法: GenerateTree(DataT ...
- Python生成目录树
1.CMD生成目录树 1.1 查看帮助 1.2 作用 1.3 命令格式 2.Python生成目录树 2.1 标准库pathlib介绍 2.2 代码实现 2.3 改进,显示指定目录 2.4 改进,保存文 ...
- 利用树的先序和后序遍历打印os中的目录树
[0]README 0.1)本代码均为原创,旨在将树的遍历应用一下下以加深印象而已:(回答了学习树的遍历到底有什么用的问题?)你对比下linux 中的文件树 和我的打印结果就明理了: 0.2)我们采用 ...
- oracle 生成目录树,jQuery zTree插件快速实现目录树
ztree是JQuery的一个开源树形目录的插件,用来快速构建网站的树形目录结构,并且提供了功能丰富,利于扩展的API. JQuery ztree官网 只要引入jquery和ztree的库js,然后给 ...
- Linux - tree 生成目录树「Note」
概览 tree 安装 tree 可选参数 tree 常用参数 win 配置 tree 安装 #Debian apt-get install tree#Ubuntu apt-get install tr ...
- C语言实现DOS系统的tree命令,DOS中的Tree命令生成目录树
[Tree命令作用] 以图形显示驱动器或路径的文件夹结构. [Tree命令格式] 在命令行窗口使用tree /?查看帮助. TREE [drive:][path] [/F] [/A] /F 显示每个文 ...
最新文章
- POJ 1679 判断最小树是否唯一
- SpringFramework5.0 @Indexed注解 简单解析
- P4123-[CQOI2016]不同的最小割【网络流,分治】
- java代码防止sql注入_动态Java代码注入
- js微信小程序页面左上角返回跳转指定页面
- 洛克人红色思考型机器人叫什么_稻船敬二新企划《红色灰烬》 依然是机器人风格...
- C语言中.和->区别
- Nacos集群部署说明
- Python | 常见的反爬及解决方法,值得收藏
- java对象创建的细节
- 网吧无盘服务器主机 系统,一个网吧无盘系统的安装步骤(新手教程)
- 华为ERPS配置步骤
- 微信dat文件用什么软件打开方式_2020微信dat文件解密工具怎么获取软件
- 差分GPS(differential GPS-DGPS,DGPS)
- 解决桌面单击右键反应慢的问题
- iOS/iPadOS中Office中文字体显示不正确的解决方法
- oracle杀缩表进程,oracle查看锁表和杀死锁表的方法总结
- 【高并发】由InterruptedException异常引发的思考
- 盘点三款好用的计时器
- 数据结构笔记(1)——二叉树的基本概念+存储结构及转化