金英华 张岩
摘 要:随着互联网(英语:Internet)应用的日益发展,我们获取和处理的信息量也呈爆发式地增加,为此,需要设计一套完整的系统来满足对信息检索的要求。本文论述了使用Java语言的InputStreamReader类设计文本检索系统的方法,InputStreamReader 是把用户输入的字节流转换成字符流。
关键词:检索系统;InputStreamReader类;BufferedReader类;System.in
1、检索的概念
信息检索(Information Retrieval)是用户进行信息查询和获取的主要方式,是查找信息的方法和手段。狭义的信息检索仅指信息查询(Information Search)。即用户根据需要,采用一定的方法,借助检索工具,从信息集合中找出所需要信息的查找过程。广义的信息检索是信息按一定的方式进行加工、整理、组织并存储起来,再根据信息用户特定的需要将相关信息准确的查找出来的过程。又称信息的存储于检索。一般情况下,信息检索指的就是广义的信息检索。
2、流(Stream)的定义
在语言程序设计使用时总是需要从键盘、文件的信息读入操作,或是写在显示器、文件、打印机,网络等设备的信息读出操作。计算机处理数据都是以0与1的方式来进行的,两个设备信息交流可以看成两个端点数据传输,两个端点之间进行数据的存取是以0与1的方式来进行的,Java将两个端点(源点和终点)之间的数据流动抽象为一个流(Stream)的概念。
在Java语言中,“流”是用来联系数据传输的源点与终点,与设备本身没关的传输介质,它是对数据传输的一种抽象的描述。
3、InputStreamReader类
InputStreamReader类是把字节流转换成字符流的介质,它读取字节流并将其转换为对应的字符。每次调用InputStreamReader类的定义对象readLine()方法时,都是读入字节流。为了提高程序的运行速度,通常将InputStreamReader类和BufferedReader类封装在一起同时使用,例如:
InputStreamReader stdin=new InputStreamReader(System.in);
BufferedReader bufin=new BufferedReader(stdin);
或者
BufferedReader bufin =new BufferedReader (new InputStreamReader(System.in));
4、java.io包
在java.io包中,包含了InputStreamReader类,BufferedReader类、程序运行过程中可能产生的异常处理类和文件类,因此需要先导入java.io包,例如:
import java.io.*;
5、InputStreamReader类的应用
本实例使用了字符输入流InputStreamReader和BufferedReader实现文字的检索。
程序利用字符串检索操作检索搜索指定子串在另外一个字符串中出现次数,Java语言提供了40多种String()法可以轻松地完成字符串匹配算法。
下面是常用的种方法:
int n= indexOf(String):从前向后搜索指定子串第一次出现的位置,返回值是该子串的下标,若没有搜索指定子串,则返回值是-1,程序中使用语句n=str1.indexOf(str2); 搜索字符串str2在字符串str1中第一次出现的位置。
int n=indexOf(String,int):从指定int位置开始从前往后搜索指定子串第一次出现的位置,返回值是该子串的下标,若没有搜索指定子串,则返回值是-1。
int n=lastIndexOf(String):从后往前搜索指定子串第一次出现的位置,返回值是该子串的下标,若没有搜索指定子串,则返回值是-1。
int n= lastIndexOf (String,int):从指定int位置开始,从后往前搜索指定子串第一次出现的位置,返回值是该子串的下标,若沒有搜索指定子串,则返回值是-1。
str2=str1.substring(int strbegin,int strend):是从字符串str1的strbegin开始到strend-1结束把之间的内容赋值给另一个字符串str2。
首先,从字符串的第一个字符开始搜索子串,找到指定子串第一次出现的位置。然后从余下的字符串中继续搜索,找到指定子串下一次出现的位置。用递归的方法如此循环,当指定子串不再出现时,返回的位置就是-1匹配结束。
设计程序要实现如图的运行结果:
参考文献
[1]李卓玲.Java程序设计实用教程.大连理工大学出版社,2005.
[2] 迟勇.Java语言程序设计.大连理工大学出版社,2013.
[3] 迟勇.Java语言程序设计实验及实训指导.大连理工大学出版社,2013.