JAVA 搜索文本文件中的关键字
2014-11-06 11:26
239 查看
用JAVA实现对文本文件中的关键字进行搜索, 依据每一行,得到每一行中出现关键词的个数。使用java.io.LineNumberReader.java 进行行读取。示例如下:
一 实现类
package cn.youzi.test;
import java.io.Closeable;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
/**
* 对文本文件的关键词进行搜索
* @author Abel
*
*/
public class TextFileSearch {
public void SearchKeyword(File file,String keyword) {
//参数校验
verifyParam(file, keyword);
//行读取
LineNumberReader lineReader = null;
try {
lineReader = new LineNumberReader(new FileReader(file));
String readLine = null;
while((readLine =lineReader.readLine()) != null){
//判断每一行中,出现关键词的次数
int index = 0;
int next = 0;
int times = 0;//出现的次数
//判断次数
while((index = readLine.indexOf(keyword,next)) != -1) {
next = index + keyword.length();
times++;
}
if(times > 0) {
System.out.println("第"+ lineReader.getLineNumber() +"行" + "出现 "+keyword+" 次数: "+times);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
close(lineReader);
}
}
/**
* 参数校验
*
* <br>
* Date: 2014年11月5日
*/
private void verifyParam(File file, String keyword) {
//对参数进行校验证
if(file == null ){
throw new NullPointerException("the file is null");
}
if(keyword == null || keyword.trim().equals("")){
throw new NullPointerException("the keyword is null or \"\" ");
}
if(!file.exists()) {
throw new RuntimeException("the file is not exists");
}
//非目录
if(file.isDirectory()){
throw new RuntimeException("the file is a directory,not a file");
}
//可读取
if(!file.canRead()) {
throw new RuntimeException("the file can't read");
}
}
/**
* 关闭流
* <br>
* Date: 2014年11月5日
*/
private void close(Closeable able){
if(able != null){
try {
able.close();
} catch (IOException e) {
e.printStackTrace();
able = null;
}
}
}
}
import java.io.File;
public class TextFileSearchTest {
public static void main(String[] args) {
TextFileSearch search = new TextFileSearch();
search.SearchKeyword(new File("E:\\testDir\\news.txt"), "中国");
}
}
结果 为:
第3行出现 中国 次数: 3
第5行出现 中国 次数: 4
第7行出现 中国 次数: 1
第9行出现 中国 次数: 3
第19行出现 中国 次数: 1
第34行出现 中国 次数: 1
第42行出现 中国 次数: 1
一 实现类
package cn.youzi.test;import java.io.Closeable;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
/**
* 对文本文件的关键词进行搜索
* @author Abel
*
*/
public class TextFileSearch {
public void SearchKeyword(File file,String keyword) {
//参数校验
verifyParam(file, keyword);
//行读取
LineNumberReader lineReader = null;
try {
lineReader = new LineNumberReader(new FileReader(file));
String readLine = null;
while((readLine =lineReader.readLine()) != null){
//判断每一行中,出现关键词的次数
int index = 0;
int next = 0;
int times = 0;//出现的次数
//判断次数
while((index = readLine.indexOf(keyword,next)) != -1) {
next = index + keyword.length();
times++;
}
if(times > 0) {
System.out.println("第"+ lineReader.getLineNumber() +"行" + "出现 "+keyword+" 次数: "+times);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
close(lineReader);
}
}
/**
* 参数校验
*
* <br>
* Date: 2014年11月5日
*/
private void verifyParam(File file, String keyword) {
//对参数进行校验证
if(file == null ){
throw new NullPointerException("the file is null");
}
if(keyword == null || keyword.trim().equals("")){
throw new NullPointerException("the keyword is null or \"\" ");
}
if(!file.exists()) {
throw new RuntimeException("the file is not exists");
}
//非目录
if(file.isDirectory()){
throw new RuntimeException("the file is a directory,not a file");
}
//可读取
if(!file.canRead()) {
throw new RuntimeException("the file can't read");
}
}
/**
* 关闭流
* <br>
* Date: 2014年11月5日
*/
private void close(Closeable able){
if(able != null){
try {
able.close();
} catch (IOException e) {
e.printStackTrace();
able = null;
}
}
}
}
二 调用
package cn.youzi.test;import java.io.File;
public class TextFileSearchTest {
public static void main(String[] args) {
TextFileSearch search = new TextFileSearch();
search.SearchKeyword(new File("E:\\testDir\\news.txt"), "中国");
}
}
结果 为:
第3行出现 中国 次数: 3
第5行出现 中国 次数: 4
第7行出现 中国 次数: 1
第9行出现 中国 次数: 3
第19行出现 中国 次数: 1
第34行出现 中国 次数: 1
第42行出现 中国 次数: 1
相关文章推荐
- JAVA 搜索文本文件中的关键字
- java实现基于关键字的文件夹(文件)的搜索、文件夹(文件)的复制、删除
- 基本上包含了Foudation框架内的所有函数和方法。 使用方法:全选,自己建一个文本类的文件,如果要使用某个方法却想不起来方法名,直接在文本中搜索关键字即可。
- 指定文件目录下搜索关键字(Java实现,递归方式)
- CoreJava_线程并发(阻塞队列):在某个文件夹下搜索含有某关键字的文件
- 文本文件关键字替换(Java)
- java快速计算文本文件行数
- 从文档中抽取文本,实现 Word, Excel, PowerPoint 文件的全文搜索
- 用递归的方式实现文件内容搜索(java)
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- 关键字: struts、formfile、commons-fileupload、java文件上传
- Java 小例子:按指定的编码读取文本文件内容
- 用java从网络上抓取HTML文件内容并写入本地文本中
- 一个emacs扩展,从指定目录或文件中搜索指定关键字
- java实现硬盘文件搜索
- 使用windows自带的搜索快速搜索文本类型文件的内容
- 搜索文本内容——Java代码的简单实现(修改版)
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- 用‘grep’搜索文本文件中的特定字符
- java 读写txt文本文件