【文章标题】搜索文本内容—— Java 代码的简单实现【文章作者】曾健生【作者邮箱】 zengjiansheng1@ 【作者 QQ 】 190678908 【作者博客】 http://blog./newjueqi http://newjueqi./ 【编程环境】 JDK 【作者声明】欢迎转载文章,但转载请保留文章的完整性以及注明文章的出处。******************************************************************************* 昨天由于编程的要求, 需要从 300 多个源代码中查找一个关键字在哪个源代码文件中用过,逼于无奈只能一个文件一个文件的查找,结果 30 分钟后本人就崩溃了(连续查了 200 多个文件) ,看到眼睛都花了还是没结果。这时我是多么怀念平时上网用搜索引擎的日子! 突然间灵机一动,现在从众多的源码文件中查找一个关键字,不就是一个典型的搜索行为, 现在学习完 Java 的 IO 流后就实现一个文本内容搜索软件。本人这个文本搜索软件的思路很简单,分为以下几步: 1. 遍历一个目录里的每个文件对象 2. 如果文件对象是一个目录,则通过递归继续遍历这个目录下的每个文件 3. 如果文件对象是一个文件,则判断文件名是否以“.java ”结尾(是否 Java 源文件) ,如果以“.java ”结尾,则读取文本内容。 4. 把文本的每一行存储在一个字符串中,通过 contains 函数判断该行字符串是否包含关键字,如果包含关键字就把该行字符串信息写入到一个配置文件中 5. 关闭文件流。 package .; import .*; // 山寨版的 LineNumberReader 类, 读取文本内容时可获得当前的代码行数, 实现了 Java 中的 LineNumberReader 的功能 class MyLineNumberReader { // 这里用的是装饰器模式,具体的内容可参见本人的博文《打造山寨产品和伪造产品的利器——装饰模式》 private Reader fr ; private int lineNumber =0; // 记录当前的行数 MyLineNumberReader( Reader fr ) { this . fr =fr; } /* 通过 read() 函数一个一个字符的读取,当遇到回车换行就返回读取的一行字符串*/ public String readLine() { int num=0; StringBuffer sb= new StringBuffer(); try { while ( (num= fr .read())!=-1 ) { if ( num== '\r' ) continue ; else if ( num== '\n' ) { lineNumber ++; // 读取一行,行号加 1 return (); // 返回读取的一行字符串} else { (( char )num ); }}} catch (IOException e) { // TODO Auto-generated catch block
搜索文本内容——Java代码简单实现 来自淘豆网m.daumloan.com转载请标明出处.