Java仿一个低配版的Everything软件

网友投稿 845 2022-05-29

用Java仿一个低配版的Everything软件

“Everything” 是 Windows 上一款搜索引擎,它能够基于文件名快速定文件和文件夹位置。

不像 Windows 内置搜索,“Everything” 默认显示电脑上每个文件和文件夹 (就如其名 “Everything”)。

您在搜索框输入的关键词将会筛选显示的文件和文件夹。

总的来说,Everything是一款免费的可以快速检索文件、文件夹的,并且占用资源比较少的Windows应用软件。

我们今天就使用Java来制作一个低配版"Everything"吧!

先上主函数:

public static void main(String[] args) { System.out.println("*********************"); System.out.println("Welcome To Everything"); System.out.println("*********************"); System.out.println("请输入要查找的文件名:"); String fileName=scanner.next(); System.out.println("文件名称\t文件路径\t文件大小\t文件最后修改时间"); File[] Drive_letters=File.listRoots(); for(File dl:Drive_letters) { find(dl,fileName); } }

这里暂时不使用图形化界面,先是命令行界面,最开始简单输出提示语。

然后输入要查找的文件名或者文件夹名,然后因为Everything是只能在Windows下运行,所以我们只考虑Windows环境下查找文件。(窃喜~)

而Windows的文件系统可能有多个根目录,所以我们用到File.listRoots(),下面来介绍一下File.listRoots()。

用Java仿一个低配版的Everything软件

Java 支持零个或多个文件系统。 而每个文件系统都有一个 {@code root} 目录,从中可以访问该文件系统中的所有其他文件。 例如,Windows 平台为每个活动驱动器都有一个根目录; UNIX 平台有一个根目录,即 {@code “/”}。 可用文件系统根集会受到各种系统级操作的影响,例如可移动媒体的插入或弹出以及物理或虚拟磁盘驱动器的断开或卸载。

此方法返回一个 {@code File} 的对象数组,这些对象表示可用文件系统的根目录。 可以保证本地机器上物理存在的任何文件的规范的路径名都可以以该方法返回的其中一个根(例如Windows平台下的C、D、E)开始。

使用File.listRoots()就可以得到电脑的文件系统的各个根目录,然后分别在各个根目录寻找我们要找的文件。

下面看一看我们写的查找文件的函数。

public static void find(File file, String fileName) { if (null != file) { if (file.isDirectory()) { File[] files = file.listFiles(); if (null != files && files.length > 0) { for (File f : files) { find(f, fileName); } } } else { String fName = file.getName(); if (fName.contains(fileName)) { String fileResultName = file.getName(); String fileResultPath = file.getAbsolutePath(); long fileResultSize = file.length(); long fileResultModify = file.lastModified(); System.out.println(fileResultName + "\t" + fileResultPath + "\t" + fileResultSize + "\t" + fileResultModify); } } } }

先是判断文件或文件夹是否为空,这些文件或文件夹可能是隐藏的或者是被保护的。

然后判断这个file是否是文件夹,如果是文件夹,就使用file.listFiles()获取里面所有文件,得到一个文件类型数组。

然后判断文件夹是否为空,如果为空,则不进去。如果不为空,遍历文件类型数组,然后每次都使用递归继续查找。

如果这个file不是文件夹,就不需要递归了。

我们比对这个文件的文件名是否与要查找的一致,如果一致就打印文件或文件夹的文件名\文件夹名、绝对路径、文件\文件夹大小和最后修改时间。

The End…

See you~

Java Windows

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Notebook在跨工作空间迁移
下一篇:实验三 二叉树的基本操作(建立)及遍历
相关文章