java编写一个文件查找器

本文详细介绍了文件搜索器的两种实现方式:基于控制台和界面。通过解决递归过程中将文件夹名称误作绝对路径的问题,优化了搜索效率。文章提供了关键代码片段和运行结果,有助于理解文件搜索的基本原理。

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

我们学过文件File之后就想写一个文件搜索器我写了两个版本的搜索器,第一个是基于控制台的就是我的查找结果要显示在控制台上,这个比较适合初学者学习,另外我又写了一个基于界面的文件搜索器,用起来比较好看,在第二个版本中我使用了皮肤包。

      首先看第一个版本,花了不到几分钟就可以搞定的东西结果让我做了很长那个时间,原因是当时递归的时候把文件夹的名称当作了绝对路径给传了进去导致无法正常递归。。。。苍天!!带走我吧。。

public  void getInfo(){
		//创建输入对象,用于得到控制台的输入信息
		Scanner input=new Scanner(System.in);
		//提示
		System.out.println("请输入查找目录:");
		//获得输入
		 strMulu=input.next();
			
		
		System.out.println("请输入查找名称:");
		
		strSearchName=input.next();
		
		beginSearch(strMulu);

	}

上面是得到目录和查找对象,最关键的是下面的一个函数

 

 

public void beginSearch(String root){
		
		//用root创建一个根文件对象
		File rootFile=new File(root);
		//将根文件夹下的目录或者文件放入数组
		File[] subFiles=rootFile.listFiles();
                //判断文件夹下的目录是否为空,或者文件夹下没有文件		
		if(subFiles==null||subFiles.length==0){
			return;
		}
	        //对文件夹下的每个文件进行操作	
       		for(int i=0;i<subFiles.length;i++){
                        //如果子文件是一个文件			
			if(subFiles[i].isFile()){

				//得到文件名称
				String FileName=subFiles[i].getName();
				//判断文件名称是否包含关键字
				if(FileName.contains(strSearchName)){
					//获得文件的绝对路径
					String path1=subFiles[i].getAbsolutePath();
					//将绝对路径加到队列
					list.add(path1);
				}

			}
			//如果是文件夹
			if(subFiles[i].isDirectory()){
				//得到文件夹名称
				String FilesName=subFiles[i].getName();
				
				//获得文件夹的绝对路径
				String path2=subFiles[i].getAbsolutePath();
				//判断文件名称是否包含关键字
				if(FilesName.contains(strSearchName)){					
					
					//将绝对路径加到队列
					list.add(path2);	
				}

                           //将子文件夹递归调用,查询下一级文件夹				 
			  beginSearch(path2);
				
			}
		}
	}
	
	
	
	
	
	public static void main(String[] args) {
		FileSearch fl=new FileSearch();
		fl.getInfo();
                //把队列中的字符串取出来并打印		
      		for(int i=0;i<list.toArray().length;i++){
			System.out.println(list.get(i));
		}
		
	}

 

 

运行的结果为:

 具体的代码见附件

前天正好要找一个本地文件, 就用java实现了, 全盘的本地文件搜索功能. 代码不依赖其它第三方jar, 连日志都用system.out了. 初学者可以了解下. 主程序: LocalFileSearcher.java LocalFileSearcher searcher = new LocalFileSearcher(); searcher.doSearch("迅雷"); log如下: Start search keyword: 迅雷 Start search all drivers! success: E:\迅雷下载 success: F:\迅雷下载 success: C:\Users\Administrator\Desktop\迅雷.lnk success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Libraries\迅雷下载.library-ms success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷影音.lnk success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷影音.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\卸载迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷.lnk Search costs : 3861(ms) File searched : 154848 Folder searched: 31463 Success match : 16 后续再更新完善
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值