金英華 周園園
摘 要:隨著計(jì)算機(jī)的普及,人們無(wú)論生活,還是工作都離不開(kāi)計(jì)算機(jī)的使用和操作。在線(xiàn)編輯文檔也顯得尤為重要,手動(dòng)修改文檔費(fèi)時(shí),還容易出錯(cuò)。本文設(shè)計(jì)了使用Java語(yǔ)言的InputStreamReader類(lèi)的文本編輯系統(tǒng),能夠批量地修改文字,提高了工作效率。
關(guān)鍵詞:辦公系統(tǒng);InputStreamReader類(lèi);BufferedReader類(lèi);System.in
1、流(Stream)的定義
在語(yǔ)言程序設(shè)計(jì)使用時(shí)總是需要從鍵盤(pán)、文件的信息讀入操作,或是寫(xiě)在顯示器、文件、打印機(jī),網(wǎng)絡(luò)等設(shè)備的信息讀出操作。計(jì)算機(jī)處理數(shù)據(jù)都是以0與1的方式來(lái)進(jìn)行的,兩個(gè)設(shè)備信息交流可以看成兩個(gè)端點(diǎn)數(shù)據(jù)傳輸,兩個(gè)端點(diǎn)之間進(jìn)行數(shù)據(jù)的存取是以0與1的方式來(lái)進(jìn)行的,Java將兩個(gè)端點(diǎn)(源點(diǎn)和終點(diǎn))之間的數(shù)據(jù)流動(dòng)抽象為一個(gè)流(Stream)的概念。
在Java語(yǔ)言中,“流”是用來(lái)聯(lián)系數(shù)據(jù)傳輸?shù)脑袋c(diǎn)與終點(diǎn),與設(shè)備本身沒(méi)關(guān)的傳輸介質(zhì),它是對(duì)數(shù)據(jù)傳輸?shù)囊环N抽象的描述。
2、數(shù)據(jù)流的類(lèi)型
可以分為:字節(jié)流(Binary Stream),字符流(Character Stream)
字節(jié)流類(lèi)都是InputStream和OutputStream類(lèi)的子類(lèi),字節(jié)流類(lèi)所操作的數(shù)據(jù)都是以一個(gè)字節(jié)(8位)的形式傳輸。InputStream流的派生類(lèi)如圖1所示,OutputStream流的派生類(lèi)如圖2所示。
字符流類(lèi)都是Reader和Writer類(lèi)的子類(lèi),字節(jié)流類(lèi)所操作的數(shù)據(jù)都是以?xún)蓚€(gè)字節(jié)(16位)的形式傳輸,因?yàn)镴ava的跨平臺(tái)特性和使用16位的Unicode字符集,使得字符流類(lèi)在處理網(wǎng)絡(luò)程序中的字符時(shí)比字節(jié)流類(lèi)更有優(yōu)勢(shì)。Reader流的派生類(lèi)如圖3所示,Writer流的派生類(lèi)如圖4所示。
3、InputStreamReader類(lèi)
InputStreamReader類(lèi)是把字節(jié)流轉(zhuǎn)換成字符流的介質(zhì),它讀取字節(jié)流并將其轉(zhuǎn)換為對(duì)應(yīng)的字符。每次調(diào)用InputStreamReader類(lèi)的定義對(duì)象readLine()方法時(shí),都是讀入字節(jié)流。為了提高程序的運(yùn)行速度,通常將InputStreamReader類(lèi)和BufferedReader類(lèi)封裝在一起同時(shí)使用,例如:
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類(lèi),BufferedReader類(lèi)、程序運(yùn)行過(guò)程中可能產(chǎn)生的異常處理類(lèi)和文件類(lèi),因此需要先導(dǎo)入java.io包,例如:
import java.io.*;
5、InputStreamReader流類(lèi)的應(yīng)用
本實(shí)例使用了字符輸入流類(lèi)InputStreamReader和BufferedReader實(shí)現(xiàn)文字的編輯。
行號(hào) 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("請(qǐng)輸入編輯的文字:");
11 ? ? ? str1=bufin.readLine();
12 ? ? ? System.out.print("請(qǐng)輸入要?jiǎng)h除的文字:");
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è)計(jì)程序要實(shí)現(xiàn)的運(yùn)行結(jié)果,如圖5所示:
參考文獻(xiàn)
[1]李卓玲.Java程序設(shè)計(jì)實(shí)用教程.大連理工大學(xué)出版社,2005.
[2] 遲勇.Java語(yǔ)言程序設(shè)計(jì).大連理工大學(xué)出版社,2013.
[3] 遲勇.Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)及實(shí)訓(xùn)指導(dǎo).大連理工大學(xué)出版社,2013.
作者簡(jiǎn)介:金英華,(1965.05),女,遼寧蓋縣,碩士研究生,副教授,研究方向:計(jì)算機(jī)軟件。