`
柯小芍
  • 浏览: 13064 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

File应用之文件搜索器(关键字搜索)

 
阅读更多

简要理解:文件搜索器其本质就是对文件目录的遍历查找。主要就是在根目录下进行循环遍历,如果是目录则继续查找,如果是文件就返回文件路径。但是简单的进行遍历在文件非常多则很是耗时,因此借用线程来节约时间。

 此为文件搜索器的界面代码:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
 * 文件搜索器界面
 * @author hadoop
 *
 */
public class Border implements ActionListener{
	private JFrame frame;
	private JTextField text1,text2;
	private JTextArea area=new JTextArea(40,50);
	/**
	 * @param 主函数
	 */
	public static void main(String[] args) {
		Border border=new Border();
     border.init();
	}
	private void init() {
		JFrame jfame=new JFrame();
		JPanel jp=new JPanel();
		jfame.setSize(800, 800);
		jfame.setDefaultCloseOperation(3);
		jfame.setTitle("文件查询器");
		jfame.setLayout(new BorderLayout());
		JLabel lable1=new JLabel("文件名: ");
	  text1=new JTextField(14);
		JLabel lable2=new JLabel("根目录: ");
		text2=new JTextField(14);
		JButton j=new JButton("搜索");
		jfame.add(jp,BorderLayout.NORTH);
		jfame.add(lable1,BorderLayout.SOUTH);
		jp.add(lable1);
		jp.add(text1);
		jp.add(lable2);
		jp.add(text2);
		jp.add(j);
		jfame.setVisible(true);
		jfame.add(new JScrollPane(area));//添加组件,显示文件内容
		//添加监听
		j.addActionListener(this);
	}

	public void actionPerformed(ActionEvent e) {
		String string=e.getActionCommand();
 		if(string.equals("搜索")){
 			FileSearchThread fileListener=new FileSearchThread(text1,text2,area);
 			fileListener.start();
 		}
	}
	
然后就是搜索文件的线程
/**
 *   文件搜索的线程
 * @author hadoop
 *
 */

public class FileSearchThread extends Thread  {
	private JTextField keyfield;
	private JTextField pathfield;
	private JTextArea display;
	//构造方法
	public FileSearchThread(JTextField keyfield,JTextField pathfield,JTextArea display){
		this.keyfield=keyfield;
		this.pathfield=pathfield;
		this.display=display;
	}
	public void run(){
		String key=keyfield.getText();
		String path=pathfield.getText();
		searchfile(key,path);
		
	}
//递归搜索文件
	private void searchfile(String keyword, String path)  {
		File file=new File(path);
		if(file.exists()){
			if(file.isDirectory()){
				File fileArray[]=file.listFiles();
				if(fileArray!=null){
					for(int i=0;i<fileArray.length;i++){
						searchfile(keyword,fileArray[i].getAbsolutePath());
					}
				}
			}
			if(file.isFile()){
					if(file.getName().indexOf(keyword)!=-1)//如果关键字在文件中出现
					display.append(file.getAbsolutePath()+"\n");


			}
		}
		
		
	}

	

}
 
分享到:
评论

相关推荐

    安卓重复文件搜索工具 Search Duplicate File 4.96 中文免费版.zip

    安卓重复文件搜索工具 Search Duplicate File 中文特别版Windows 10 Manager 中文版 什么是重复文件? 从互联网下载两次或以上的音乐,照片,视频或应用程序。 通过蓝牙接收的文件两次或更多次。 缓存的图像或缩略图...

    入门学习Linux常用必会60个命令实例详解doc/txt

    ◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、...

    C# 3.0完全自学宝典 (F)

    FileViewer 演示文件查看器WPF窗体应用程序实例 第10章(\ch10) 示例描述:学习.NET中的文件操作。 BinaryFile 演示二进制文件读写实例 TextFile 演示文本文件读写实例 CopyFile 演示复制文件实例 Create...

    WEB渗透测试数据库

    # 爆破url.txt中的所有站点,爆破敏感文件,自定义notfound页面关键字为“找不到页面” pen.py uribrute -b -u @urls.txt -t interestfile --notfound "找不到页面" 3.1.5 Google Hacking功能 pen.py的search子...

    OmniOutliner-5.6.dmg omnioutliner: 5.6

    保存的过滤器不仅可以立即在文档中搜索关键字或复选框,而且OmniOutliner 5 Pro允许您将这些过滤器保存在侧栏中。滑入式检查器 通过添加自动隐藏您不需要看到的内容的偏好设置,改进了全屏模式。只需将鼠标滑到屏幕...

    powerbuilder

    参数jobname:string类型,可选项,指定要打开打印作业的名称,该名称将显示在打印管理器窗口中返回值Long。函数执行成功时返回打印作业号,发生错误时返回-1。如果任何参数的值为NULL,PrintOpen()函数返回NULL。...

    Hacking Vim

    生成文件纲要,包括函数、关键字等。安装后使用:Tlist 3.3 A 实现头文件跳转。ctags不能查找头文件 3.4 NERDtree 目录浏览功能。可以用o命令打开目录或文件,非常好用 3.5 MiniBuffer 打开多个文件时,生成一个类似...

    Visual C# 2005程序设计自学手册 随书源码第一部分(共三部)

    13.2.5 制作关键字和索引文件 309 13.2.6 制作.chm文件 313 13.3 HTML帮助文件的使用 314 13.4 本章小结 315 第14章 GDI+技术 316 14.1 GDI+概述 317 14.2 基本图形绘制 317 14.2.1 绘制直线 317 ...

    数据库灾难性恢复(数据库技术;灾难性;恢复;数据备份)

    然后在该备份之上应用日志。该过程会将数据库或表空间恢复到某个特定时间点。前滚恢复要求启用归档日志记录。 3. 恢复的级别 建立灾难恢复计划对于现代企业至关重要。企业数据库中的信息对于进行业务活动是极其重要...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    Monkey测试结果分析

    一般测试结果分析-搜索关键字: 1.程序无响应,ANR问题:在日志中搜索“ANR” 2.崩溃问题:在日志中搜索“CRASH” 3.其他问题:在日志中搜索”Exception” 详细分析monkey日志 Switch--查看log中的Switch,主要...

    超级有影响力霸气的Java面试题大全文档

    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 16、sleep() 和 wait() 有什么区别? sleep是线程类(Thread)...

    eclipse 开发c/c++

    CDT 调试 MI(CDT Debug MI)是用于与 MI 兼容的调试器的应用程序连接器。 现在,让我们研究一下如何在实际应用程序中使用这些组件。图 1 显示了 Eclipse 中的 C/C++ 项目: 图 1. 在带有 CDT 插件的 Eclipse 中...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    11.我们双击文件列表的dialog.ui 文件,便出现了下面所示的图形界面编辑界 面。 12.我们在右边的器件栏里找到Label 标签器件 13.按着鼠标左键将其拖到设计窗口上,如下图。 14.我们双击它,并将其内容改为helloworld...

    Python核心编程第二版

     2.15 文件和内建函数open()、file()   2.16 错误和异常   2.17 函数   2.17.1 如何定义函数   2.17.2 如何调用函数   2.17.3 默认参数   2.18 类   2.19 模块   2.19.1 如何导入模块...

    Linux高级bash编程

    外部过滤器,程序和命令 12.1. 基本命令 12.2. 复杂命令 12.3. 时间/日期 命令 12.4. 文本处理命令 12.5. 文件与归档命令 12.6. 通讯命令 12.7. 终端控制命令 12.8. 数学计算命令 12.9. 混杂命令 13. ...

    Advanced Bash-Scripting Guide <>

    16.3. 应用 17. Here Documents 17.1. Here Strings 18. 休息时间 Part 4. 高级 19. 正则表达式 19.1. 一个简要的正则表达式介绍 19.2. 通配 20. 子shell(Subshells) 21. 受限shell(Restricted Shells) 22. 进程替换...

    Altium Designer Beta 19.0.10完整版安装包+安装教程+和谐文件

    固定组件面板错误,在执行基于文件的库搜索后无法重新打开所选组件类别。 进口商/出口商 17619 修复了导致P-CAD导入导出错误和PCAD16LD.DLL访问冲突的错误。 24746 修复了导入xDxDesigner项目时未正确转换总线的...

    Python核心编程第二版(ok)

     9.2 文件内建函数(open()和file())   9.2.1 工厂函数file()   9.2.2 通用换行符支持(UNS)   9.3 文件内建方法   9.3.1 输入   9.3.2 输出   9.3.3 文件内移动   9.3.4 文件迭代 ...

Global site tag (gtag.js) - Google Analytics