首页 > 编程语言 >Java方法递归:File文件搜索

Java方法递归:File文件搜索

时间:2024-06-30 23:27:42浏览次数:3  
标签:文件 searchUnpack Java 递归 搜索 File 方法 dir

        在Java中,方法递归是一种特殊的情况,其中方法直接或间接地调用自身。为了使用方法递归,方法需要有基本情况,即不再调用自身的条件,以防止进入无限循环。

        我们来做一个搜索文件并打开的案例。以打开QQ为例,因为我的电脑只有C盘,我搜索文件的地方,就写C盘。

public class Test {
    public static void main(String[] args) throws IOException {
        searchUnpack(new File("C:/"), "QQ.exe");
    }

    /**
     * 搜索需要打开的文件方法
     * @param dir  开始搜索的地址
     * @param fileName  需要打开的文件
     * @throws IOException  抛出会出现的异常
     */
    public static void searchUnpack(File dir, String fileName) throws IOException {
        //排除异常状况
        if (dir == null ||!dir.exists() || dir.isFile()) {
            return;
        }

        //获取当前目录下的一级文件
        File[] files = dir.listFiles();

        //判断不是空文件
        if (files!= null) {
            //开始遍历文件夹
            for (File f : files) {
                //判断是不是文件
                if (f.isFile()) {
                    //再判断是不是需要的文件
                    if (f.getName().contains(fileName)) {
                        //是需要的文件输出并打开文件
                        System.out.println("找到了: " + f.getAbsolutePath());
                        Runtime runtime = Runtime.getRuntime();
                        runtime.exec(f.getAbsolutePath());

                    }
                } else {
                    //是文件夹,就继续重复搜索
                    searchUnpack(f, fileName);
                }
            }
        }
    }
}

        这段代码主要实现了一个在指定目录下搜索特定文件名的文件,并在找到后执行该文件的功能。 在main方法中,我们调用了searchUnpack方法,并传入了根目录 C:/ 和要搜索的文件QQ.exe。searchUnpack方法首先进行了一系列的条件判断,以确保传入的目录是有效的。如果目录为空、不存在或者本身是一个文件,那么直接返回。 接着,通过 listFiles方法获取目录下的所有文件和子目录。对于每个文件,如果是普通文件并且文件名包含我们要搜索的字符串,就输出其绝对路径,并通过 Runtime类来执行该文件。如果是子目录,则递归调用searchMethod方法继续搜索。 例如,如果我们在 C:/目录下有一个名为 QQ.exe 的文件,并且代码运行时能够正确识别和执行,这就实现了我们的搜索和执行目标。

但是这种案例是有很大问题的,这会很吃我们的性能,因为要从C盘里找到一个文件,是一个非常大的工程,得需要分特殊情况使用。

标签:文件,searchUnpack,Java,递归,搜索,File,方法,dir
From: https://blog.csdn.net/2301_76253020/article/details/140080646

相关文章

  • Java集成框架
    Java集成框架(JavaIntegrationFramework)涵盖了许多库和工具,帮助开发者实现各种功能。这些框架包括Spring、ApacheCamel、JavaEE等。1.SpringFrameworkSpring是一个广泛使用的企业级应用程序框架,提供全面的基础设施支持,包括依赖注入、面向切面编程、事务管理等教程......
  • 494.力扣每日一题6/30 Java(三种解法)
    博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞......
  • “Java编程学习路线图:从新手到专家的全面指南“
    学习Java编程语言是一个系统化的过程,涉及多个阶段和技能点。下面是一个推荐的Java学习路线,包括一些关键的里程碑和相应的表情符号来表达学习过程中的情感体验。1.基础入门......
  • Java毕业设计-高校学生课堂考勤打卡系统 Vue前后端分离
    传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,班级信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的高校学生课堂考勤系统。......
  • Java毕业设计-马场养马马病管理系统
    传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,马病信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的马病管理系统。本马病管......
  • 基于java web模拟数据生成器的设计与实现
    选题的背景: 随着网络和计算机技术的飞速发展,软件开发,软件测试等IT行业在蓬勃发展,而往往开发这些软件等需要涉及到特别庞大的工作量,为了方便开发与测试人员进行系统的功能等测试,因此,我们的数据生成器系统由此诞生。软件开发与测试从之前的由程序员一个代码一个代码的敲,一个一......
  • 【JavaScript脚本宇宙】打造完美用户体验:必备JS图形库指南
    探索顶尖JavaScript图形库:从jsPlumb到mxGraph前言在现代的Web开发中,交互式图形和数据可视化库成为了不可或缺的工具。这些库不仅提供了丰富的功能,还大大简化了开发人员的工作流程。本文将介绍和比较六个流行的JavaScript图形和数据可视化库:jsPlumb、GoJS、draw2d、Cytosca......
  • 【JavaScript脚本宇宙】加速您的网站:图像优化工具和库的终极指南
    别让大图拖垮你的应用:如何正确优化图像前言在数字时代,图像是我们日常生活中不可或缺的一部分。然而,随着图像数量的增加和分辨率的提高,它们也占据了越来越多的存储空间和带宽。为了解决这个问题,开发人员可以使用各种图像优化工具和技术来减小图像文件的大小,同时保持其质量......
  • 【JavaScript脚本宇宙】精通前端开发:六大热门CSS框架详解
    前端开发的利器:深入了解六大CSS框架前言在现代Web开发中,选择适合的前端框架和工具包是构建高效、响应式和美观的网站或应用程序的关键。本文将详细介绍六个广受欢迎的CSS框架:Bootstrap、Bulma、TailwindCSS、Foundation、Materialize和SemanticUI。每个框架都有其独特的......
  • 基于Java+SSM+Vue的医院住院管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......