`
yhan219
  • 浏览: 11560 次
  • 来自: 成都
社区版块
存档分类
最新评论

java遍历一个目录中不包括当前目录的其他所有父级目录

    博客分类:
  • java
阅读更多

现在有一个功能,需要在一个目录中排除这个目录以外的所有其他目录,把要排除的目录列出来。例如:根目录为/a,不排除的目录是/a/b/c/d,c级目录级c级以上的所有目录和文件都要排除,其中要求不排除目录的所有父级目录都不排除,如本例中/a/b/c不排除,但是/a/b/e则要排除;排除文件有格式要求,例如,排除目录/a/b,则要求加上**/a/b/**,文件则不用加末尾斜杠及两个星号。按照向上遍历的思路,代码如下:

package com.thunisoft.svn;

import java.io.File;

public class Utils {
    /**
     * @param file 当前所在目录被排除的目录
     * @param rootFile 根目录
     * @return 当前目录不包括被排除的目录
     */
    public String get(File file,File rootFile){
        StringBuffer sb=new StringBuffer();
        File[] fileList=file.getParentFile().listFiles();
        for(File f:fileList){
            if(!f.getPath().equals(file.getPath())){
                sb.append("**"+f.getPath().replace(rootFile.getPath(), "").replace("\\\\", "/"));
                if(f.isDirectory()){//文件夹处理
                    sb.append("/**");
                }
                sb.append(";");
            }
        }
        String result=sb.toString();
        if(System.getProperties().getProperty("os.name").toLowerCase().startsWith("windows")){
            result.replace("//", "/");//处理Windows系统文件路径斜杠问题
        }
        return result;
    }
    /**
     * 
     * @param projectPath 项目目录
     * @param rootPath 根目录
     * @return
     */
    public String getAll(String projectPath,String rootPath){
        StringBuffer sb=new StringBuffer();
        File file=new File(projectPath);
        File rootFile=new File(rootPath);
        while(!file.getPath().equals(rootFile.getPath())){//遍历目录的父级目录,直到根目录
            sb.append(get(file, rootFile)+"\n");
            file=file.getParentFile();
        }
        String result=sb.toString();
        return result.substring(0, result.length()-2);//去掉末尾分号
    }

    public static void main(String[] args) {
        Utils u=new Utils();
        String rootPath="E:/a/rootPath";
        String projectPath="E:/a/rootPath/a/b/c";
        System.out.println(u.getAll(projectPath,rootPath));
    }

}
分享到:
评论

相关推荐

    Java文件目录操作(模拟DOS)

    在Java中,同样需要创建一个新的`File`对象,其路径为当前目录的父路径,然后更新为当前目录。 5. **创建目录(md)**: `md`命令用于创建新目录。在Java中,可以使用`java.io.File`的`mkdir()`或`mkdirs()`方法。`...

    根据当前节点获取所有父节点信息

    根据当前节点获取所有父节点信息(18代)SQL根据当前节点递归遍历获取所有父节点信息,短短的SQL可以解决复杂的问题

    无限级树正向查找、反向查找例子【递归实现】

    否则,遍历当前节点的所有子节点,对每个子节点进行递归查找。如果在子节点中找到目标节点,返回该节点,否则继续查找。 **三、反向查找** 反向查找,或称自顶向下查找,是从根节点开始,逐级向下查找目标节点。它...

    根据子节点的金额向上汇总所有父节点的金额

    标题中的“根据子节点的金额向上汇总所有父节点的金额”是一个典型的树形结构数据处理问题,常见于组织架构、账目统计或者数据库层次结构的数据分析。这个问题涉及到的知识点包括但不限于: 1. **树形结构**:在...

    Ztree利用getNodesByFilter进行js搜索 搜索父级隐藏

    "Ztree利用getNodesByFilter进行js搜索 搜索父级隐藏"这一主题涉及到在ZTree中实现高级搜索功能,特别是当需要隐藏不符合条件的父级节点时。通常,ZTree展示的数据结构是一个层次化的树形结构,每个节点可能包含子...

    ExpandableListView 解决子级背景色混乱 和父级展开项唯一效果实现

    在这个代码片段中,我们遍历所有的组,如果当前点击的组不是正在检查的组并且该组已经展开,我们就收缩它。然后,我们展开刚刚点击的组。 以上就是关于“ExpandableListView解决子级背景色混乱和父级展开项唯一效果...

    用java获取CPU占用率

    最后,所有收集到的信息被封装进一个`MonitorInfoBean`对象中,这个对象包含了总的线程数和CPU占用率。这种设计使得数据的传递和处理更加结构化,便于进一步的分析和显示。 ### 总结 使用Java获取CPU占用率的过程...

    Java IO流 File类的常用API实例

    4. `mkdirs()`:创建一个目录和所有必要的父级目录,返回布尔值,表示是否成功创建。 5. `renameTo()`:重命名文件或目录,返回布尔值,表示是否成功重命名。 三、遍历目录 1. 使用`list()`或`listFiles()`方法...

    用反射的方式获取父类中的所有属性和方法

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部结构,包括类的属性、方法以及构造器。本文将深入探讨如何使用反射来获取父类中的所有属性和方法,这对于理解和调试...

    java和js中cookie的相关操作.pdf

    - 读取Cookie时,只能读取当前路径及直接父路径的Cookie,不能跨多个父级路径读取。 - 删除Cookie时,如果没有在当前路径找到,会向上遍历父路径,直到找到并删除匹配的Cookie。 3. **JavaScript中的Cookie操作**...

    数据绑定到tree控件上。

    在C#或Java等支持递归的语言中,你可以编写一个函数,接收当前节点,并查找其所有子节点,然后对每个子节点执行相同的操作,直到遍历完整个数据集。 3. **创建树节点**:一旦获取了数据,就需要将这些数据转化为...

    java实现递归菜单树

    这里使用了一个名为`Menu`的实体类,它包含了菜单的基本属性,如菜单名称、顺序、路径、父级ID以及菜单图标。此外,为了表示菜单间的父子关系,我们还添加了一个`List<Menu>`类型的`children`属性,这个属性是`@...

    70、修复父评论删除时子评论同时删除的问题1

    例如,在本案例中,当删除一个“父评论”时,发现其下的“子评论”也会被一同删除,导致数据丢失,用户体验受损。 #### 二、数据库设计中的外键约束 数据库中的表间关联通常通过“外键”实现。在外键约束中,有一个...

    javascript客户端遍历控件与获取父容器对象示例代码

    在JavaScript中,如果需要获取一个元素的父级、父级的父级,可以连续调用`parentNode`。示例代码中的`CheckBoxAll()`函数展示了如何获取点击按钮的上级元素。首先,`e.parentNode`获取到了直接父元素,接着`e....

    Oracle递归树形结构查询功能

    在实际应用中,例如组织结构的展示,我们可以创建一个包含部门信息的表`SYS_DEPT`,其中`dept_id`为主键,`par_dept_id`表示父级部门ID,以此建立层级关系。通过递归查询,我们可以轻松地获取任意部门及其所有子部门...

    2021-2022计算机二级等级考试试题及答案No.10860.docx

    联合查询是将一个或多个表、一个或多个查询的字段组合作为查询结果中的一个字段,执行此查询时,将返回所包含的表或查询中对应字段的记录。 #### JavaApplication实例 12. 在Java中,可以通过命令行参数传递信息给...

    省市区三级联动

    请求的参数通常包括当前选中的父级ID,以便服务器知道应该返回哪些子级数据。 3. **数据处理**:服务器返回的数据通常为JSON格式,前端接收到数据后需要解析并填充到下级选择框中。可以使用`$.each()`遍历数组并...

    Adrorid级联下拉框

    适配器需要根据当前父级的选择动态更新下一级别的下拉列表。 3. 监听器:设置监听器(OnClickListener或OnItemSelectedListener)来捕获用户的选择事件。当用户在某个级别选择一项时,触发事件,更新下一级别的...

    javascript基础核心内容

    在作用域链中查找变量时,会从当前作用域开始,如果找不到,则向上遍历作用域链。 6. **闭包**: 闭包是一种特性,它允许函数访问并操作其外部作用域的变量,即使该函数在其外部作用域已经被销毁。闭包在内存管理...

Global site tag (gtag.js) - Google Analytics