实现可自定义的搜索功能

有一次我的项目中,要从用户指定的目录搜索指定的内容。可能是目录也可能是文件。而且用户要搜索的名称可能有特定的格式。并且能对所有子目录进行搜索。

对于特定格式的搜索,我们可以用正则表达式来做。例如,所有的*.ini为扩展名的文件名,其正则表达式为

.+\\.ini$

而对子目录的穷极搜索,可以使用在基本计算机课程就学过的递归函数。后面的程序中可以看到如何写。

为此设计了一个简单的搜索框架。搜索功能和搜索结果的处理是分开处理的。这也是为了达到最高的灵活性。其结构如下:
<pre>

+==========Class===============+
+ FileSearcher + +==========Interface=======+
+==============================+ + FileSearcherListener +
+ +search() + <>================o +==========================+
+ +registerSearcherListener() + + +found(File file) +
+ +unregisterSearcherListener()+ +==========================+
+==============================+

</pre>
通过上面的类结构图我们看到,完成搜索功能的是FileSearcher类,它提供search()方法来进行搜索。而 FileSearcherListener负责处理搜索到的项目。你可以通过实现FileSearcherListener接口来定制自己的搜索结果处理方式。并通过FileSearcher类的registerSearcherListener方法来注册你自己定义的处理处理类。这样的结构,很好的解决了搜索过程与搜索结果处理的强藕和问题。
这样我就可以很方便的定制我要搜索的内容并处理。来看看下面的示例:
<pre>
/* 定义一个listener,来对进行处理,这个例子只是简单的在控制台打出文件名。*/
FileSearcherListener listener = new FileSearcherListener()
{
int count=1;
public void found(File file)
{
System.out.println("Found "+count+":"+file);
count++;
}
};
/* 构造FileSearcher类,指定搜索起始目录为c:/WINNT, 搜索类型为FILE, 匹配格式是所有*.ini文件。*/
FileSearcher search = new FileSearcher("c:/WINNT",FileSearcher.FILE,".+\\.ini$");
search.registerSearcherListener(listener);
search.search();

</pre>

时间: 2024-10-03 19:58:12

实现可自定义的搜索功能的相关文章

搜索更随心,傲游3搜索功能自定义技巧

  傲游3搜索功能使用简单,通过搜索栏.地址栏.起始页,或者选词拖放等均可打开默认搜索引擎进行搜索.傲游3默认搜索引擎为百度,喜欢其他搜索引擎的用户可以在搜索栏下拉菜单修改这个设置.     图一 傲游3搜索栏默认提供了百度.谷歌.有道搜索.傲游多重搜索四个引擎以供选择,如果用户对这四个搜索均不满意,也可以点击"设置"进入搜索引擎设置界面自行调整. 添加新的搜索引擎 想要添加新引擎的用户可以通过点击搜索栏下拉菜单中的"设置"进入设置界面,然后点击页面右上角的&quo

自定义搜索功能Android实现_Android

先看看效果图: 源码下载:自定义搜索功能 代码: SearchActivity.java package com.bzu.gxs.search.activity; import android.app.Activity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.AdapterView; import and

自定义搜索功能Android实现

先看看效果图: 源码下载:自定义搜索功能 代码: SearchActivity.java package com.bzu.gxs.search.activity; import android.app.Activity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.AdapterView; import and

活用Windows 7搜索功能 更快更准更贴心

Windows 7(以下简称Win 7)推出之后,各项功能都受到了用户的好评.其中Win 7的搜索功能更是一个亮点,成为很多用户最常用的一个功能.相比Windows XP完全依靠电脑性能的即时搜索,Win 7的搜索原理已经和过去完全不同,性能也大幅提升.不过也许你还不知道,通过优化使用方法,我们可以让Win 7的搜索更快.更准! 最简单方法 缩小搜索范围 平时我们使用Win 7的搜索功能可能都是在Win 7的开始菜单当中直接进行的,不过这样的搜索是对所有的索引文件进行检索,而那些没有加入索引当中

Beyond Compare 4文本比较搜索功能介绍

  打开Beyond Compare软件,选择文本比较会话,打开会话操作界面,单击"浏览文件"按钮,选择需要比较的文本文件.单击工具栏"搜索"按钮,在展开的菜单选择,"下一个差异部分"或者"上一个差异部分",可以帮助您快速查找所有的差异文件,并在状态栏显示差异文本具体的行号. 通过在"下一个差异部分"和"上一个差异部分"之间的来回切换,可以帮助您前进或者回到之前的一系列行与差异.当下(上

Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

今天给大家带来ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,我们知道一般我们对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A-Z的排序,我们需要将汉字转换成拼音就行了,接下来就带大家实现一般数据的A-Z排序功能,首先先看下效果图 上面是一个带删除按钮的EditText,我们在输入框中输入可以自动过滤出我们想要的东西,当输入框中没有数据自动替换到原来的数据列表,然后下面一个ListView

jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)_jquery

jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信. 一.要引用的文件 要使用jqGrid,首先页面上要引入如下css与js文件. 1.css <link href="/css/ui.jqgrid.css" rel="stylesheet" type="text/css" /> 2.js <script src='/Scripts/js/jquery-2.

Android 百度地图POI搜索功能实例代码_Android

在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这三个字母,决定认认真真的搜索一些POI具体的含义. POI是英文的缩写,原来的单词是point of interest, 直译成中文就是兴趣点的意思.兴趣点这个词最早来自于导航地图厂商.地图厂商为了提供尽可能多的位置信息,花费了很大的精力去寻找诸如加油站,餐馆,酒店,景点等目的地,这些目的地其实都可

android开发-这个搜索功能怎么实现呀?求大神帮忙指点,谢谢!下面是代码

问题描述 这个搜索功能怎么实现呀?求大神帮忙指点,谢谢!下面是代码 主程序的:public class MainActivity extends Activity { private ListView listview; private MedicineService medicineservice; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi