金英華 張巖



摘 要:隨著互聯(lián)網(wǎng)(英語:Internet)應用的日益發(fā)展,我們獲取和處理的信息量也呈爆發(fā)式地增加,為此,需要設計一套完整的系統(tǒng)來滿足對信息檢索的要求。本文論述了使用Java語言的InputStreamReader類設計文本檢索系統(tǒng)的方法,InputStreamReader 是把用戶輸入的字節(jié)流轉換成字符流。
關鍵詞:檢索系統(tǒng);InputStreamReader類;BufferedReader類;System.in
1、檢索的概念
信息檢索(Information Retrieval)是用戶進行信息查詢和獲取的主要方式,是查找信息的方法和手段。狹義的信息檢索僅指信息查詢(Information Search)。即用戶根據(jù)需要,采用一定的方法,借助檢索工具,從信息集合中找出所需要信息的查找過程。廣義的信息檢索是信息按一定的方式進行加工、整理、組織并存儲起來,再根據(jù)信息用戶特定的需要將相關信息準確的查找出來的過程。又稱信息的存儲于檢索。一般情況下,信息檢索指的就是廣義的信息檢索。
2、流(Stream)的定義
在語言程序設計使用時總是需要從鍵盤、文件的信息讀入操作,或是寫在顯示器、文件、打印機,網(wǎng)絡等設備的信息讀出操作。計算機處理數(shù)據(jù)都是以0與1的方式來進行的,兩個設備信息交流可以看成兩個端點數(shù)據(jù)傳輸,兩個端點之間進行數(shù)據(jù)的存取是以0與1的方式來進行的,Java將兩個端點(源點和終點)之間的數(shù)據(jù)流動抽象為一個流(Stream)的概念。
在Java語言中,“流”是用來聯(lián)系數(shù)據(jù)傳輸?shù)脑袋c與終點,與設備本身沒關的傳輸介質,它是對數(shù)據(jù)傳輸?shù)囊环N抽象的描述。
3、InputStreamReader類
InputStreamReader類是把字節(jié)流轉換成字符流的介質,它讀取字節(jié)流并將其轉換為對應的字符。每次調用InputStreamReader類的定義對象readLine()方法時,都是讀入字節(jié)流。為了提高程序的運行速度,通常將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類、程序運行過程中可能產(chǎn)生的異常處理類和文件類,因此需要先導入java.io包,例如:
import java.io.*;
5、InputStreamReader類的應用
本實例使用了字符輸入流InputStreamReader和BufferedReader實現(xiàn)文字的檢索。
程序利用字符串檢索操作檢索搜索指定子串在另外一個字符串中出現(xiàn)次數(shù),Java語言提供了40多種String()法可以輕松地完成字符串匹配算法。
下面是常用的種方法:
int n= indexOf(String):從前向后搜索指定子串第一次出現(xiàn)的位置,返回值是該子串的下標,若沒有搜索指定子串,則返回值是-1,程序中使用語句n=str1.indexOf(str2); 搜索字符串str2在字符串str1中第一次出現(xiàn)的位置。
int n=indexOf(String,int):從指定int位置開始從前往后搜索指定子串第一次出現(xiàn)的位置,返回值是該子串的下標,若沒有搜索指定子串,則返回值是-1。
int n=lastIndexOf(String):從后往前搜索指定子串第一次出現(xiàn)的位置,返回值是該子串的下標,若沒有搜索指定子串,則返回值是-1。
int n= lastIndexOf (String,int):從指定int位置開始,從后往前搜索指定子串第一次出現(xiàn)的位置,返回值是該子串的下標,若沒有搜索指定子串,則返回值是-1。
str2=str1.substring(int strbegin,int strend):是從字符串str1的strbegin開始到strend-1結束把之間的內容賦值給另一個字符串str2。
首先,從字符串的第一個字符開始搜索子串,找到指定子串第一次出現(xiàn)的位置。然后從余下的字符串中繼續(xù)搜索,找到指定子串下一次出現(xiàn)的位置。用遞歸的方法如此循環(huán),當指定子串不再出現(xiàn)時,返回的位置就是-1匹配結束。
設計程序要實現(xiàn)如圖的運行結果:
參考文獻
[1]李卓玲.Java程序設計實用教程.大連理工大學出版社,2005.
[2] 遲勇.Java語言程序設計.大連理工大學出版社,2013.
[3] 遲勇.Java語言程序設計實驗及實訓指導.大連理工大學出版社,2013.