[SearchEverything] (java项目)本地文件搜素助手

这是一个基于Java的轻量级命令行工具,用于快速搜索本地文件。它占用资源少,搜索速度快,支持文件名和文件类型的组合搜索。通过多线程遍历文件系统并使用Apache Commons IO进行文件监控,同时利用H2数据库存储文件信息。工具提供配置选项,如搜索结果数量、排序方式和排除特定路径。测试显示,创建索引可以显著提高搜索效率。
摘要由CSDN通过智能技术生成

1. 简介
基于Java语言开发的轻量级命令行文件搜索工具,占用极低的系统资源,得到超高的搜索效率。
2. 背景
有时候忘了文件的存储位置,但Windows系统自带的搜索执行起来太慢了,所以开发一款命令行工具,用来实现快速搜索文件的功能。
3. 功能
功能就是搜索文件所在路径。支持两种方式的搜索,一种是根据文件名获取文件路径,另一种是根据文件名+文件类型获取文件路径。结果显示可以自定义(比如对返回结果的数量限制;按照文件目录级数升序或降序排列;支持对搜索路径进行自定义,可以自己选择在搜索时排除掉哪些路径,比如C盘中的Windows目录下一般存放系统文件,我们在搜索时就可以排除这个目录;并且具有文件监控功能,当系统中有创建新的文件或删除文件时,会在命令行提示我们)。
在这里插入图片描述
4. 技术

  • Java(文件操作,输入输出流)
  • Database
  • JDBC
  • Java多线程
  • 文件系统监控(Apache Commons IO)

5. 实现
实现部分,我们总体可以分为以下三部分

  • 程序入口
    这部分比较简单 ,我们只需要根据用户输入的命令,调用统一配置管理中相应的方法,给用户返回相应的结果即可。
  • 程序配置
    程序配置我们需要对索引路径进行定义,定义一些要排除的路径,比如C:\Windows、C:\ProgramData类似这样的路径。除此之外,我们还需要配置
    结果的返回数量,结果显示排序方式,是否需要构建索引。这些配置信息我在代码中直接设置了默认值,此外我提供了一个properties文件,在这里用户可以自己定义要配置的信息,代码会优先读取文件中的配置信息,并做设置工作,如果文件为空,使用默认值。
  • 核心业务代码
    核心业务就是遍历本机中的所有文件,存储到数据库中,根据指定文件名搜索,返回结果。
    我将业务拆分一下,首先就是要遍历本机中所有文件,遍历文件使用java中File的相关操作。为了提高效率,这里采用多线程来遍历,一个线程遍历一个盘符
 public void buildIndex() {
   
        //建立索引
        DataSourceFactory.databaseInit(true);
        HandlerPath handlerPath = config.getHandlerPath();
        Set<String> includePaths = handlerPath.getIncludePath();
        new Thread(() -> {
   
            System.out.println("Build Index Started ...");
            String startTime = Test.printTime();
            System.out.println(startTime);
            System.out.println();
            final CountDownLatch countDownLatch = new CountDownLatch(includePaths.size());
            for (String path : includePaths) {
   
                executorService.submit(() -> {
   
                    fileScan.index(path);
                    countDownLatch.countDown();
                });
            }
            try {
   
                countDownLatch.await();
            } catch (InterruptedException e) {
   
                e.printStackTrace();
            }
            System.out.println("Build Index Complete ...");
            String endTime = Test.printTime();
            System.out.println
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值