金英華 周園園
摘 要:隨著計算機的普及,人們無論生活,還是工作都離不開計算機的使用和操作。在線編輯文檔也顯得尤為重要,手動修改文檔費時,還容易出錯。本文設(shè)計了使用Java語言的InputStreamReader類的文本編輯系統(tǒng),能夠批量地修改文字,提高了工作效率。
關(guān)鍵詞:辦公系統(tǒng);InputStreamReader類;BufferedReader類;System.in
1、流(Stream)的定義
在語言程序設(shè)計使用時總是需要從鍵盤、文件的信息讀入操作,或是寫在顯示器、文件、打印機,網(wǎng)絡(luò)等設(shè)備的信息讀出操作。計算機處理數(shù)據(jù)都是以0與1的方式來進行的,兩個設(shè)備信息交流可以看成兩個端點數(shù)據(jù)傳輸,兩個端點之間進行數(shù)據(jù)的存取是以0與1的方式來進行的,Java將兩個端點(源點和終點)之間的數(shù)據(jù)流動抽象為一個流(Stream)的概念。
在Java語言中,“流”是用來聯(lián)系數(shù)據(jù)傳輸?shù)脑袋c與終點,與設(shè)備本身沒關(guān)的傳輸介質(zhì),它是對數(shù)據(jù)傳輸?shù)囊环N抽象的描述。
2、數(shù)據(jù)流的類型
可以分為:字節(jié)流(Binary Stream),字符流(Character Stream)
字節(jié)流類都是InputStream和OutputStream類的子類,字節(jié)流類所操作的數(shù)據(jù)都是以一個字節(jié)(8位)的形式傳輸。InputStream流的派生類如圖1所示,OutputStream流的派生類如圖2所示。
字符流類都是Reader和Writer類的子類,字節(jié)流類所操作的數(shù)據(jù)都是以兩個字節(jié)(16位)的形式傳輸,因為Java的跨平臺特性和使用16位的Unicode字符集,使得字符流類在處理網(wǎng)絡(luò)程序中的字符時比字節(jié)流類更有優(yōu)勢。Reader流的派生類如圖3所示,Writer流的派生類如圖4所示。
3、InputStreamReader類
InputStreamReader類是把字節(jié)流轉(zhuǎn)換成字符流的介質(zhì),它讀取字節(jié)流并將其轉(zhuǎn)換為對應(yīng)的字符。每次調(diào)用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)生的異常處理類和文件類,因此需要先導(dǎo)入java.io包,例如:
import java.io.*;
5、InputStreamReader流類的應(yīng)用
本實例使用了字符輸入流類InputStreamReader和BufferedReader實現(xiàn)文字的編輯。
行號 Bangongxitong.java
1 import java.io.*;
2 public class Bangongxitong
3 {
4 ? public static void main(String args[])
5 ? ? {
6 ? ? ? String str1,str2,str3,str4;
7 ? ? ? InputStreamReader stdin=new InputStreamReader(System.in);
8 ? ? ? BufferedReader bufin=new BufferedReader(stdin);
9 ? ? ? try{
10 ? ? ? System.out.print("請輸入編輯的文字:");
11 ? ? ? str1=bufin.readLine();
12 ? ? ? System.out.print("請輸入要刪除的文字:");
13 ? ? ? str2=bufin.readLine();
14 ? ? ? int n=str1.indexOf(str2);
15 ? ? ? while (n!=-1)
16 ? ? ? {str3=str1.substring(0,n);
17 ? ? ? ?str4=str1.substring(n+str2.length());
18 ? ? ? ?str1=str3.concat(str4);
19 ? ? ? ?n=str1.indexOf(str2);
20 ? ? ? ?}
21 ? ? ? System.out.println("編輯后的內(nèi)容:"+str1);
22 ? ? ? stdin.close();
23 ? ? ? bufin.close();
24 ? ? ? ? ?}
25 ? ? ? catch(IOException e)
26 ? ? ? {
27 ? ? ? System.out.println("發(fā)生I/O異常??!");
28 ? ? ? }
29 ? ? ?}
30 }
設(shè)計程序要實現(xiàn)的運行結(jié)果,如圖5所示:
參考文獻
[1]李卓玲.Java程序設(shè)計實用教程.大連理工大學(xué)出版社,2005.
[2] 遲勇.Java語言程序設(shè)計.大連理工大學(xué)出版社,2013.
[3] 遲勇.Java語言程序設(shè)計實驗及實訓(xùn)指導(dǎo).大連理工大學(xué)出版社,2013.
作者簡介:金英華,(1965.05),女,遼寧蓋縣,碩士研究生,副教授,研究方向:計算機軟件。