element tree 显示 ftp 目录树

本文介绍了如何在前端展示FTP服务器的目录树,通过Element UI的Tree组件实现懒加载功能。首先展示了获取FTP目录树的Java代码,利用`org.apache.commons.net.ftp.FTPClient`连接并获取根目录下的文件夹列表。然后,阐述了将这些数据适配到Element Tree组件中进行展示的过程,虽然细节繁多,但整体思路清晰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作中遇到要求,在前端做出一个 ftp 服务器的目录树。首先上效果图。

俩个问题:1,获取到ftp的目录树。2,使用element tree组件显示出来。

1:获取到ftp的目录树

刚开始没有使用懒加载方式,使用递归方法获取到所有的目录树(链接:https://blog.youkuaiyun.com/ScutZt/article/details/87774485),不过该ftp下文件太多,目录树数据比较大,传到前端后浏览器直接奔溃。于是开始考虑懒加载方式。

首先定义树节点结构:

public class TreeVo {
    // label为节点标题
    private String label;
    // leaf标记是否为叶子节点
    private boolean leaf;
 

    public TreeVo() {
    }

    public TreeVo(String label, boolean leaf) {
        this.label = label;
        this.leaf = leaf;
    }

    public boolean isLeaf() {
        return leaf;
    }

    public void setLeaf(boolean leaf) {
        this.leaf = leaf;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }


}

懒加载获取ftp目录有俩步,一,根据ftpIp,port,user,password连接上ftp服务器,如果连接成功则返回根目录下的文件夹列表,连接失败则返回错误信息。连接ftp使用的是 org.apache.commons.net.ftp.FTPClient;

java代码如下:

       // 请求ftp链接,并返回根目录下文件夹列表
       @Override
       public Map findFtpDirectoryList(EtlFileSource etlFileSource) {
        
        // etlFileSource类中包含ftp连接的参数。

        Map<String, Object> resultMap = new HashMap<>(2);
        String flag = "success";

        try {
            ftpClient = new FTPClient();
            ftpClient.connect(etlFileSource.getFtpIp(), Integer.parseInt(etlFileS
本程序可列出 FTP 服务器的全部目录结构,并将其树状结构以文本格式输出,具有以下特点: 1、使用单线程连接 FTP,适应恶劣网络条件,断线后可自动重连,可设置重试次数、手动跳过等; 2、支持与 cmd 的 tree 命令相同格式的目录树文本输出,可依据输出参数设置重复输出结果; 3、可指定需要列表的 FTP 根目录、递归目录深度、结果输出格式(是否包含文件、是否输出文件大小信息等); 4、可指定单个目录获取出错时的最大尝试次数,可手动跳过某个获取出错的目录; 5、可设置常见的 FTP 连接、传输参数,支持中文目录/文件名; 6、运行过程中可暂停/继续、中止,可随时输出当前已获取到的部分结果; 7、结果可保存到文件,载入后可重新输出结果,也可以继续上次未成功完成的部分; 8、支持隐藏为托盘区图标和气泡提示,任务完成后自动断开 FTP 连接; 9、基于 VS2008 C# 编写,使用 FtpWebRequest 实现,提供可执行程序及全部源代码。 若有其它问题,欢迎与我联系交流:heweiqi0086@126.com,^_^ ============= 版本更新记录 ============= 说明: [+]增加功能特性 [-]较少功能特性 [!]改进已有功能 [X]修正已有Bug ---------------- - 1.6.9.0802 - ---------------- [+]可以设定每隔指定的获取记录数自动保存结果到文件。 [+]保存结果文件可以 GZip 格式压缩,但速度较慢、较耗内存。 [+]增加一种快速存储文件的方式,在测试中速度可以提高7-30倍。 [+]可以设定任务结束后是否自动输出结果。 [+]输出结果时可以直接输出到文件。 [+]可以手动进行内存整理,即时释放闲置内存。 [!]外观修改,原外观在win2003下很难看。 [!]界面布局修改。 [X]在不运行任务情况下,载入结果再保存的话会异常。 ---------------- - 1.5.9.0717 - ---------------- [+]错误达到指定次数后显示提示信息时,可指定是否暂停后续尝试。 [+]显示当前文件夹获取进度条。 [+]保持当前结果到文件,可重新载入,以便重新输出结果,也可以继续上次未成功完成的搜索任务。 [!]提高实时生效参数的灵敏性,若输入无效数字字符(如abc),会自动修改为默认值,不会导致程序异常。 [!]等待重连过程中,会有时间倒数提示,并且能即时中止任务。 [!]界面布局修改。 [!]修改提示信息文字。
**** 已有更新版本,请下载新版本 **** 本程序可列出 FTP 服务器的全部目录结构,并将其树状结构以文本格式输出,具有以下特点: 1、使用单线程连接 FTP,适应恶劣网络条件,断线后可自动重连,可设置重试次数、手动跳过等; 2、支持与 cmd 的 tree 命令相同格式的目录树文本输出,可依据输出参数设置重复输出结果; 3、可指定需要列表的 FTP 根目录、递归目录深度、结果输出格式(是否包含文件、是否输出文件大小信息等); 4、可指定单个目录获取出错时的最大尝试次数,可手动跳过某个获取出错的目录; 5、可设置常见的 FTP 连接、传输参数,支持中文目录/文件名; 6、运行过程中可暂停/继续、中止,可随时输出当前已获取到的部分结果; 7、结果可保存到文件,载入后可重新输出结果,也可以继续上次未成功完成的部分; 8、支持隐藏为托盘区图标和气泡提示,任务完成后自动断开 FTP 连接; 9、基于 VS2008 C# 编写,使用 FtpWebRequest 实现,提供可执行程序及全部源代码。 若有其它问题,欢迎与我联系交流:heweiqi0086@126.com,^_^ ============= 版本更新记录 ============= 说明: [+]增加功能特性 [-]较少功能特性 [!]改进已有功能 [X]修正已有Bug ---------------- - 1.5.9.0717 - ---------------- [+]错误达到指定次数后显示提示信息时,可指定是否暂停后续尝试。 [+]显示当前文件夹获取进度条。 [+]保持当前结果到文件,可重新载入,以便重新输出结果,也可以继续上次未成功完成的搜索任务。 [!]提高实时生效参数的灵敏性,若输入无效数字字符(如abc),会自动修改为默认值,不会导致程序异常。 [!]等待重连过程中,会有时间倒数提示,并且能即时中止任务。 [!]界面布局修改。 [!]修改提示信息文字。
Element Tree 是Python标准库中的一个模块,它提供了解析XML文本的功能。在Element Tree中,我们可以使用Element对象来表示XML文档中的各个元素并进行增删改查操作,同时可以通过Element对象构建出一棵XML文档树。 要删除Element Tree中的某个元素,我们可以使用ElementTree类的remove方法,将指定的Element对象从它的父节点中移除。移除元素后,我们需要在Element Tree中手动刷新树。这可以通过调用ElementTree类的write方法完成,该方法会将修改后的Element Tree重新序列化为XML文本并写入到指定的文件对象或文件路径中。 具体而言,在删除某个元素后,我们可以通过以下代码刷新Element Tree: ```python # treeElement Tree对象 # element为待删除的Element对象 parent = element.getparent() # 获取待删除元素的父节点 parent.remove(element) # 从父节点中移除待删除元素 # 刷新Element Tree tree.write('output.xml', encoding='utf-8', xml_declaration=True) ``` 在这里,我们首先获取待删除元素的父节点,并使用Element对象的remove方法将它从父节点中移除。接着,我们调用了ElementTree类的write方法将修改后的Element Tree重新序列化为XML文本,并写入到名为output.xml的文件中。在write方法中,我们需要指定序列化后的XML文本编码格式和写入文件时是否要包含XML声明。 总之,通过使用Element Tree的remove方法和write方法,我们可以删除Element Tree中的元素并刷新树。这将使我们得到修改后的XML文本并可用于后续操作。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值