版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、0Java的基本輸入與輸出1Java的基本輸入與輸出方式l字符界面方式(本章內(nèi)容)字符界面方式(本章內(nèi)容)l圖形界面方式(以后介紹)圖形界面方式(以后介紹)2一、一、JavaJava中流的概念中流的概念u日常生活中的流可以被理解為一根日常生活中的流可以被理解為一根“導(dǎo)管導(dǎo)管”。u導(dǎo)管的特點(diǎn):?jiǎn)蜗蛐?。?dǎo)管的特點(diǎn):?jiǎn)蜗蛐?。日常生活中所說的流:日常生活中所說的流: 1、什么是流什么是流?u“導(dǎo)管導(dǎo)管”中的流類似于中的流類似于JavaJava語(yǔ)言中的語(yǔ)言中的IOIO流。流。uJavaJava語(yǔ)言中,流是程序在輸入輸出過程中語(yǔ)言中,流是程序在輸入輸出過程中流動(dòng)的數(shù)據(jù)序列。流動(dòng)的數(shù)據(jù)序列。u流有兩個(gè)端口:
2、一端與數(shù)據(jù)源點(diǎn)(當(dāng)輸入數(shù)據(jù)時(shí))或數(shù)據(jù)流有兩個(gè)端口:一端與數(shù)據(jù)源點(diǎn)(當(dāng)輸入數(shù)據(jù)時(shí))或數(shù)據(jù)終點(diǎn)(當(dāng)輸出數(shù)據(jù)時(shí))相連,另一端與程序相連。終點(diǎn)(當(dāng)輸出數(shù)據(jù)時(shí))相連,另一端與程序相連。32、流的示意圖、流的示意圖l當(dāng)程序要把結(jié)果輸送到數(shù)據(jù)終點(diǎn)時(shí),必須在程序和數(shù)據(jù)終當(dāng)程序要把結(jié)果輸送到數(shù)據(jù)終點(diǎn)時(shí),必須在程序和數(shù)據(jù)終點(diǎn)之間連接建立輸出流點(diǎn)之間連接建立輸出流。 數(shù)據(jù)源數(shù)據(jù)源ProgramProgramn當(dāng)程序要從數(shù)據(jù)源點(diǎn)獲得數(shù)據(jù)時(shí),必須在程序和數(shù)據(jù)源之當(dāng)程序要從數(shù)據(jù)源點(diǎn)獲得數(shù)據(jù)時(shí),必須在程序和數(shù)據(jù)源之間建立間建立輸入流。輸入流。43、流的分類、流的分類l根據(jù)流中數(shù)據(jù)傳輸?shù)姆较颍瑢⒘鞣譃椋焊鶕?jù)流中數(shù)據(jù)傳輸?shù)姆较?/p>
3、,將流分為:輸入流輸入流: :從鍵盤或磁盤文件流向程序的數(shù)據(jù)流,為程序提從鍵盤或磁盤文件流向程序的數(shù)據(jù)流,為程序提供輸入信息。供輸入信息。輸出流輸出流: :從程序流向顯示器、打印機(jī)、磁盤文件的數(shù)據(jù)流,從程序流向顯示器、打印機(jī)、磁盤文件的數(shù)據(jù)流,實(shí)現(xiàn)程序的輸出功能。實(shí)現(xiàn)程序的輸出功能。l根據(jù)流中的數(shù)據(jù)格式,將流分為:根據(jù)流中的數(shù)據(jù)格式,將流分為:字符流:以字符為傳輸單位;字符流:以字符為傳輸單位;字節(jié)流:以字節(jié)為傳輸單位;字節(jié)流:以字節(jié)為傳輸單位;5兩種結(jié)構(gòu)的流uu Node Stream(節(jié)點(diǎn)流) :從特定源地方讀寫的流類,如磁盤文件或內(nèi)存某如磁盤文件或內(nèi)存某區(qū)域進(jìn)行讀或?qū)懭?。區(qū)域進(jìn)行讀或?qū)懭?/p>
4、。uFilter Steam(過濾流):使用已經(jīng)存在的輸入流或輸出流連接創(chuàng)建:使用已經(jīng)存在的輸入流或輸出流連接創(chuàng)建。使用節(jié)點(diǎn)流作為輸入或輸出。u節(jié)點(diǎn)流類:用于直接操作目標(biāo)設(shè)備所對(duì)應(yīng)的流類; 過濾流通常代表?yè)碛心撤N功能, 但也要通過節(jié)點(diǎn)流實(shí)現(xiàn)其功能6二、二、JavaJava中提供的中提供的IOIO流流l為了便于流的處理,為了便于流的處理,JavaJava在在Java.ioJava.io包中提供了豐富的類,包中提供了豐富的類,每個(gè)類代表了一種特定的輸入或輸出流。每個(gè)類代表了一種特定的輸入或輸出流。l利用輸入流類可以建立輸入流對(duì)象,利用輸入數(shù)據(jù)流類提供利用輸入流類可以建立輸入流對(duì)象,利用輸入數(shù)據(jù)流類
5、提供的方法可以從輸入設(shè)備將數(shù)據(jù)讀入到程序中;的方法可以從輸入設(shè)備將數(shù)據(jù)讀入到程序中;l利用輸出流類可以建立輸出流對(duì)象,利用輸出數(shù)據(jù)流類提供利用輸出流類可以建立輸出流對(duì)象,利用輸出數(shù)據(jù)流類提供的方法可以將程序產(chǎn)生的數(shù)據(jù)寫到輸出設(shè)備上;的方法可以將程序產(chǎn)生的數(shù)據(jù)寫到輸出設(shè)備上;7 1 1、JavaJava中流類的總圖如下:中流類的總圖如下:用于輸入的字節(jié)用于輸入的字節(jié)流流用于輸出的字節(jié)用于輸出的字節(jié)流流用于輸入的字符用于輸入的字符流類流類用于輸出的字符用于輸出的字符流類流類82 2、字節(jié)流類、字節(jié)流類l字節(jié)流以字節(jié)方式從流中讀取或向流中寫入數(shù)據(jù),字節(jié)流類字節(jié)流以字節(jié)方式從流中讀取或向流中寫入數(shù)據(jù),
6、字節(jié)流類有:有:輸入流類輸入流類InputStreamInputStream及其子類及其子類輸出流類輸出流類OutputStreamOutputStream及其子類及其子類lInputStreamInputStream和和OutputStreamOutputStream分別是所有字節(jié)輸入分別是所有字節(jié)輸入類和字節(jié)輸出類流的祖先。類和字節(jié)輸出類流的祖先。lInputStreamInputStream和和OutputStreamOutputStream為為抽象類抽象類,不能用來直接,不能用來直接創(chuàng)建流,創(chuàng)建流,只能用它們的子類創(chuàng)建字節(jié)輸入或字節(jié)輸出流只能用它們的子類創(chuàng)建字節(jié)輸入或字節(jié)輸出流。9字節(jié)
7、流類的繼承圖:字節(jié)流類的繼承圖:10InputStream字節(jié)流的字節(jié)流的方法方法 uu三個(gè)基本三個(gè)基本read()方法方法int read() int read(byte ) int read( byte, int offset, int length )uu其它方法其它方法void close( ) /int available() /long skip(long n) / void mark(int) /void reset( ) / 11OutputStream字節(jié)流方法字節(jié)流方法uu三個(gè)基本的三個(gè)基本的write( )方法方法void write( int ) / 寫一個(gè)字節(jié)寫一個(gè)字
8、節(jié)void write(byte ) / 寫一個(gè)字節(jié)數(shù)組寫一個(gè)字節(jié)數(shù)組void write(byte , int offset, int length ) uu其它方法其它方法void flush( ) void close( ) 12基本的字節(jié)流類FileInputStream和和FileOutputStream 節(jié)點(diǎn)流,用于從文件中讀取或往文件中寫入字節(jié)流。節(jié)點(diǎn)流,用于從文件中讀取或往文件中寫入字節(jié)流。BufferedInputStream和和BufferedOutputStream 過濾流,需要使用已經(jīng)存在的節(jié)點(diǎn)流來構(gòu)造,提供帶緩沖的讀寫,提高了讀寫的效過濾流,需要使用已經(jīng)存在的節(jié)點(diǎn)流來
9、構(gòu)造,提供帶緩沖的讀寫,提高了讀寫的效率。率。DataInputStream和和DataOutputStream 過濾流,需要使用已經(jīng)存在的節(jié)點(diǎn)流來構(gòu)造,提供了讀寫過濾流,需要使用已經(jīng)存在的節(jié)點(diǎn)流來構(gòu)造,提供了讀寫Java中的基本數(shù)據(jù)類型中的基本數(shù)據(jù)類型的功能。的功能。PipedInputStream和和PipedOutputStream 管道流,用于線程間的通信。一個(gè)線程的管道流,用于線程間的通信。一個(gè)線程的PipedInputStream對(duì)象從另一個(gè)線程的對(duì)象從另一個(gè)線程的PipedOutputStream對(duì)象讀取輸入。要使管道流有用,必須同時(shí)構(gòu)造管道輸入流對(duì)象讀取輸入。要使管道流有用,必
10、須同時(shí)構(gòu)造管道輸入流和管道輸出流。和管道輸出流。13FileInputStream,FileOutputStream文件流文件流uu文件流類包括:文件流類包括:FileInputStream,FileOutputStreamuu創(chuàng)建文件流:常用文件名或創(chuàng)建文件流:常用文件名或File類的對(duì)象創(chuàng)建文件流。類的對(duì)象創(chuàng)建文件流。14uu是過濾流。是過濾流。 數(shù)據(jù)從原始流成塊讀入或?qū)?shù)據(jù)積累到一個(gè)大數(shù)據(jù)塊后數(shù)據(jù)從原始流成塊讀入或?qū)?shù)據(jù)積累到一個(gè)大數(shù)據(jù)塊后再成批輸出。再成批輸出。uu基本方法:基本方法:int read()int read( byte, int offset, int length )i
11、nt write(int c)void write(byte , int offset, int length )void flush( ) void close( ) uuBufferedReader增加增加readLine( ) 方法。方法。BufferedInputStream/BufferedOutputStream15uu DataInputStream和和DataOutputStream(Filter stream)讀寫基本數(shù)據(jù)類型:讀寫基本數(shù)據(jù)類型:DataInputStream方法方法 byte readByte( )boolean readBoolean( ) long re
12、adLong( )char readChar( ) double readDouble( )float readFloat( ) short readshort( )int readInt( )DataOutputStream 方法方法 void writeByte(byte)void writeBoolean(boolean) void writeLong( long )void writeChar(char) void writeDouble(double)void writeFloat( float) void writeshort(short)void writeInt ( int)
13、void writeBytes(String)void writeChars(String )DataInputStream/DataOutputStream16limport java.io.*;lpublic class test l public static void main(String args) throws IOException l / write the data outl DataOutputStream out = new DataOutputStream(newl FileOutputStream(invoice1.txt);l double prices = 19
14、.99, 9.99, 15.99, 3.99, 4.99 ;l int units = 12, 8, 13, 29, 50 ;l String descs = Java T-shirt,l Java Mug,l Duke Juggling Dolls,l Java Pin,l Java Key Chain ;l for (int i = 0; i prices.length; i +) l out.writeDouble(pricesi);l out.writeChar(t);l out.writeInt(unitsi);l out.writeChar(t);l out.writeChars(
15、descsi);l out.writeChar(n);l l out.close();17l/ read it in againl DataInputStream in = new DataInputStream(newl FileInputStream(invoice1.txt);l double price;l int unit;l String desc; l try l while (true) l price = in.readDouble();l in.readChar(); / throws out the tabl unit = in.readInt();l in.readCh
16、ar(); / throws out the tabl desc = in.readLine();l System.out.println( price:+price + unit:+l unit + desc:+ desc); l l catch (EOFException e) l l in.close();l l 字節(jié)寫入文本看不到這些原來的數(shù)字,只有通過DataInputStream讀出來 18三、標(biāo)準(zhǔn)輸入三、標(biāo)準(zhǔn)輸入/ /輸出輸出標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/ /輸出輸出; ;指面向標(biāo)準(zhǔn)輸入設(shè)備和標(biāo)準(zhǔn)輸出設(shè)備指面向標(biāo)準(zhǔn)輸入設(shè)備和標(biāo)準(zhǔn)輸出設(shè)備的輸入的輸入/ /輸出。輸出。標(biāo)準(zhǔn)輸入設(shè)備:現(xiàn)階段默認(rèn)為
17、鍵盤。標(biāo)準(zhǔn)輸入設(shè)備:現(xiàn)階段默認(rèn)為鍵盤。標(biāo)準(zhǔn)輸出設(shè)備:現(xiàn)階段默認(rèn)為顯示器。標(biāo)準(zhǔn)輸出設(shè)備:現(xiàn)階段默認(rèn)為顯示器。191、SystemSystem類類 SystemSystem類是類是JavaJava語(yǔ)言中一個(gè)功能強(qiáng)大、非常有語(yǔ)言中一個(gè)功能強(qiáng)大、非常有用的類,它提供了標(biāo)準(zhǔn)輸入與輸出、運(yùn)行時(shí)的系用的類,它提供了標(biāo)準(zhǔn)輸入與輸出、運(yùn)行時(shí)的系統(tǒng)信息等重要工具,是屬于統(tǒng)信息等重要工具,是屬于java.langjava.lang包的一個(gè)終包的一個(gè)終止類。止類。 SystemSystem類不能創(chuàng)建對(duì)象,即類不能創(chuàng)建對(duì)象,即SystemSystem類的屬性和類的屬性和方法都是靜態(tài)的,引用時(shí)要以方法都是靜態(tài)的,引用時(shí)要
18、以SystemSystem為前綴。為前綴。 inin、outout、errerr為為SystemSystem類的三個(gè)靜態(tài)屬性。類的三個(gè)靜態(tài)屬性。20Java系統(tǒng)內(nèi)預(yù)定義的標(biāo)準(zhǔn)系統(tǒng)內(nèi)預(yù)定義的標(biāo)準(zhǔn)IO流定義格式流定義格式public final class java.lang.System extends java.lang.object public static InputStream in; public static PrintStream out; public static PrintStream err; 21 System.in:標(biāo)準(zhǔn)輸入流,默認(rèn)指鍵盤,用于程:標(biāo)準(zhǔn)輸入流,默認(rèn)指鍵
19、盤,用于程序輸入,通常讀取用戶從鍵盤輸入的信息。序輸入,通常讀取用戶從鍵盤輸入的信息。 System.out:標(biāo)準(zhǔn)輸出流,默認(rèn)指屏幕,用于標(biāo)準(zhǔn)輸出流,默認(rèn)指屏幕,用于程序輸出,通常向用戶顯示信息。程序輸出,通常向用戶顯示信息。 System.err:標(biāo)準(zhǔn)錯(cuò)誤流,默認(rèn)指屏幕,用于標(biāo)準(zhǔn)錯(cuò)誤流,默認(rèn)指屏幕,用于向用戶顯示出錯(cuò)信息。向用戶顯示出錯(cuò)信息。JavaJava系統(tǒng)預(yù)先定義的標(biāo)準(zhǔn)系統(tǒng)預(yù)先定義的標(biāo)準(zhǔn)IOIO流流222 2 標(biāo)準(zhǔn)輸出流標(biāo)準(zhǔn)輸出流 標(biāo)準(zhǔn)輸出流使用標(biāo)準(zhǔn)輸出流使用System類的靜態(tài)屬性類的靜態(tài)屬性out的的print()和和println()方法提供向屏幕輸出不同類型數(shù)據(jù)的功能。實(shí)現(xiàn)格方
20、法提供向屏幕輸出不同類型數(shù)據(jù)的功能。實(shí)現(xiàn)格式如下:式如下: System.out.print() System.out.println() 注意:注意:out為為OutputStream類的子類類的子類FilterOutputStream的子類的子類PrintStream創(chuàng)建的創(chuàng)建的對(duì)象,而對(duì)象,而print()和和println()方方法為法為PrintStream類的成員方法。類的成員方法。233 標(biāo)準(zhǔn)輸入流標(biāo)準(zhǔn)輸入流 標(biāo)準(zhǔn)輸入流使用標(biāo)準(zhǔn)輸入流使用System類的靜態(tài)屬性類的靜態(tài)屬性in的的read()方法方法從鍵盤讀取一個(gè)字節(jié)到程序。實(shí)現(xiàn)格式如下:從鍵盤讀取一個(gè)字節(jié)到程序。實(shí)現(xiàn)格式如下:
21、 System.in.read() 功能:執(zhí)行該方法時(shí),等待用戶擊鍵,當(dāng)擊一次鍵后,功能:執(zhí)行該方法時(shí),等待用戶擊鍵,當(dāng)擊一次鍵后,該方法從輸入流中讀出一個(gè)字節(jié)(所鍵入字符的該方法從輸入流中讀出一個(gè)字節(jié)(所鍵入字符的ASCII碼),然后將該字符的碼),然后將該字符的ASCII碼換成碼換成Unicode編碼,返回編碼,返回值為值為Unicode編碼的編碼的int型數(shù)。按回車輸入結(jié)束。型數(shù)。按回車輸入結(jié)束。Unicode碼擴(kuò)展自ASCII字元集。在嚴(yán)格的ASCII中,每個(gè)字元用7位元表示,或者電腦上普遍使用的每字元有8位元寬;而Unicode使用全16位元字元集。這使得Unicode能夠表示世界上
22、所有的書寫語(yǔ)言中的字元、象形文字和其他符號(hào)。 24說明:說明:in是是System類的一個(gè)屬性,代表系統(tǒng)標(biāo)準(zhǔn)輸入(鍵盤)。類的一個(gè)屬性,代表系統(tǒng)標(biāo)準(zhǔn)輸入(鍵盤)。In屬性是屬性是InputStream類的對(duì)象,類的對(duì)象, InputStream類中的方類中的方法法read()用于接受從標(biāo)準(zhǔn)輸入設(shè)備輸入的字符。執(zhí)行用于接受從標(biāo)準(zhǔn)輸入設(shè)備輸入的字符。執(zhí)行System.in.read()會(huì)得到輸入字符的會(huì)得到輸入字符的unicode編碼值。編碼值。在在java中,當(dāng)進(jìn)行鍵盤輸入時(shí)要處理可能發(fā)生的異?,F(xiàn)象,中,當(dāng)進(jìn)行鍵盤輸入時(shí)要處理可能發(fā)生的異?,F(xiàn)象,因此程序設(shè)計(jì)時(shí)使用的因此程序設(shè)計(jì)時(shí)使用的Syste
23、m.in.read()語(yǔ)句必須包含在語(yǔ)句必須包含在try語(yǔ)句塊中,而且語(yǔ)句塊中,而且try語(yǔ)句塊的后面應(yīng)該有一個(gè)可以接收語(yǔ)句塊的后面應(yīng)該有一個(gè)可以接收IOException異常的異常的catch語(yǔ)句塊。語(yǔ)句塊。25Java I/O庫(kù)的設(shè)計(jì)原則庫(kù)的設(shè)計(jì)原則 Java的I/O庫(kù)提供了一個(gè)稱做鏈接的機(jī)制,可以將一個(gè)流與另一個(gè)流首尾相接,形成一個(gè)流管道的鏈接。這種機(jī)制實(shí)際上是一種被稱為Decorator(裝飾)設(shè)計(jì)模式的應(yīng)用。 通過流的鏈接,可以動(dòng)態(tài)的增加流的功能,而這種功能的增加是通過組合一些流的基本功能而動(dòng)態(tài)獲取的。 我們要獲取一個(gè)I/O對(duì)象,往往需要產(chǎn)生多個(gè)I/O對(duì)象,這也是Java I/O庫(kù)不
24、太容易掌握的原因,但在I/O庫(kù)中Decorator模式的運(yùn)用,給我們提供了實(shí)現(xiàn)上的靈活性。26I/O流的鏈接流的鏈接FileInputStreamBufferedInputStreamDataInputStream數(shù)據(jù)數(shù)據(jù)DataOutputStreamBufferedOutputStreamFileOutputStream數(shù)據(jù)數(shù)據(jù)從文件中獲取輸入字節(jié)從文件中獲取輸入字節(jié)增加了緩沖的功能增加了緩沖的功能增加了讀取增加了讀取Java基本基本數(shù)據(jù)類型的功能數(shù)據(jù)類型的功能Input Stream ChainOutput Stream Chain可以往輸出流中寫入可以往輸出流中寫入Java基本數(shù)據(jù)類型
25、基本數(shù)據(jù)類型提供數(shù)據(jù)寫入到緩沖區(qū)提供數(shù)據(jù)寫入到緩沖區(qū)的功能的功能將數(shù)據(jù)寫入到文件中將數(shù)據(jù)寫入到文件中27管道流管道流uu管道用來把一個(gè)線程的輸出連接到另一個(gè)線程的輸入。管道用來把一個(gè)線程的輸出連接到另一個(gè)線程的輸入。uu PipedReader/PipedInputStream實(shí)現(xiàn)管道的輸入端;實(shí)現(xiàn)管道的輸入端;uu PipedWriter/PipedOutputStream實(shí)現(xiàn)管道的輸出端。實(shí)現(xiàn)管道的輸出端。uu管道流模型:管道流模型:管道輸入管道輸出管道輸入線程1連接線程2線程3連接管道輸出28將一個(gè)線程的輸出流直接掛在另一個(gè)線程的輸入流,將一個(gè)線程的輸出流直接掛在另一個(gè)線程的輸入流,建立
26、管道建立管道connect方法,實(shí)現(xiàn)線程間數(shù)據(jù)交換。方法,實(shí)現(xiàn)線程間數(shù)據(jù)交換。uuPipedInputStream pin= new PipedInputStream( );PipedOutputStream pout = new PipedOutputStream(pin);uuPipedInputStream pin= new PipedInputStream( );PipedOutputStream pout = new PipedOutputStream();pin.connect(pout);或或pout.connect(pin)。管道流的創(chuàng)建管道流的創(chuàng)建29字符流類字符流類 使用字
27、節(jié)流輸入字符串較復(fù)雜,使用字符流處使用字節(jié)流輸入字符串較復(fù)雜,使用字符流處理字符串的輸入,相對(duì)于字節(jié)流來講,較為方便。理字符串的輸入,相對(duì)于字節(jié)流來講,較為方便。 JavaJava字符流類主要用來讀寫字符流類主要用來讀寫UnicodeUnicode字符。字符字符。字符流處理的單元為流處理的單元為2 2個(gè)字節(jié)個(gè)字節(jié)的的UnicodeUnicode字符字符 字符流類層次的頂層是字符流類層次的頂層是ReaderReader類類和和WriterWriter類類。 30ReaderBufferedReaderCharArrayReaderFilterReaderPipedReaderStringRead
28、erFileReader LineNumberReaderPushbackReader InputStreamReader31WriterBufferedWriterCharArrayWriterFilterWriterPipedWriterPrintWriterFileWriter OutputStreamWriterStringWriter32主要字符流類及其子類主要字符流類及其子類 Reader Reader類:類: 用來以字符方式從流中讀取數(shù)據(jù)。其中包含了用來以字符方式從流中讀取數(shù)據(jù)。其中包含了一套所有字符輸入流都需要的方法,可以完成最基一套所有字符輸入流都需要的方法,可以完成最基本的
29、從字符輸入流讀取數(shù)據(jù)的功能。本的從字符輸入流讀取數(shù)據(jù)的功能。ReaderReader類也是類也是一個(gè)抽象類一個(gè)抽象類,實(shí)際應(yīng)用中創(chuàng)建的對(duì)象是,實(shí)際應(yīng)用中創(chuàng)建的對(duì)象是ReaderReader類的類的某個(gè)子類的對(duì)象,通過對(duì)象與外設(shè)數(shù)據(jù)源相連。某個(gè)子類的對(duì)象,通過對(duì)象與外設(shè)數(shù)據(jù)源相連。33WriterWriter類:類: 用來以字符方式向輸出流中寫入數(shù)據(jù)。其中包用來以字符方式向輸出流中寫入數(shù)據(jù)。其中包含了一套所有字符輸出流都需要的方法,可以完含了一套所有字符輸出流都需要的方法,可以完成最基本的向字符輸出流寫入數(shù)據(jù)的功能。成最基本的向字符輸出流寫入數(shù)據(jù)的功能。 WriterWriter類也是一個(gè)類也是
30、一個(gè)抽象類抽象類,實(shí)際應(yīng)用中創(chuàng)建的對(duì),實(shí)際應(yīng)用中創(chuàng)建的對(duì)象是象是WriterWriter類的某個(gè)子類的對(duì)象,通過對(duì)象與外類的某個(gè)子類的對(duì)象,通過對(duì)象與外設(shè)數(shù)據(jù)源相連。設(shè)數(shù)據(jù)源相連。34Reader類和Writer類的常用子類: Reader類:類: BufferedReader類類:把字符流中的字符讀入指定的緩沖區(qū)。:把字符流中的字符讀入指定的緩沖區(qū)。 CharArrayReader類:允許使用字符數(shù)組作為數(shù)據(jù)流。類:允許使用字符數(shù)組作為數(shù)據(jù)流。 FilterReader類:允許讀取過濾的的字符數(shù)據(jù)流。類:允許讀取過濾的的字符數(shù)據(jù)流。 InputStreamReader類類:讀取字節(jié)數(shù)據(jù)并將其
31、轉(zhuǎn)化為字符。:讀取字節(jié)數(shù)據(jù)并將其轉(zhuǎn)化為字符。 Writer類類 : BufferedWriter類:將數(shù)據(jù)緩沖區(qū)的字符寫到輸出流類:將數(shù)據(jù)緩沖區(qū)的字符寫到輸出流 CharArrayWriter類:將字符數(shù)組緩沖區(qū)的字符寫到輸出流。類:將字符數(shù)組緩沖區(qū)的字符寫到輸出流。 FilterWriter類:將過濾的字符寫到輸出流。類:將過濾的字符寫到輸出流。 OutputStreamWriter類:將字符轉(zhuǎn)化為字節(jié)寫到輸出流。類:將字符轉(zhuǎn)化為字節(jié)寫到輸出流。35BufferedReader類: 該類可以對(duì)任何種類的輸入流進(jìn)行帶緩沖區(qū)的封裝以實(shí)現(xiàn)性能的改善。該該類可以對(duì)任何種類的輸入流進(jìn)行帶緩沖區(qū)的封裝以
32、實(shí)現(xiàn)性能的改善。該類的構(gòu)造函數(shù)以類的構(gòu)造函數(shù)以ReaderReader所有子類對(duì)象為參數(shù),將從數(shù)據(jù)源讀取的多個(gè)數(shù)據(jù)可所有子類對(duì)象為參數(shù),將從數(shù)據(jù)源讀取的多個(gè)數(shù)據(jù)可以先暫存放到緩沖區(qū)中,即將以先暫存放到緩沖區(qū)中,即將Unicode字符流包裝(轉(zhuǎn)換)成緩沖流,使輸字符流包裝(轉(zhuǎn)換)成緩沖流,使輸入速度更快。例如:入速度更快。例如: BufferedReader bufin=new BufferedReader(new InputStreamReader(System.in) 該語(yǔ)句相當(dāng)于用該語(yǔ)句相當(dāng)于用BufferedReader 類創(chuàng)建了一個(gè)緩沖過濾流對(duì)象類創(chuàng)建了一個(gè)緩沖過濾流對(duì)象bufin。
33、BufferedReader類的類的readline()方法每次從輸入流中讀取一行數(shù)據(jù),返方法每次從輸入流中讀取一行數(shù)據(jù),返回一個(gè)字符串。例如:回一個(gè)字符串。例如: String sname=bufin.readline(); 該語(yǔ)句相當(dāng)于從緩沖過濾流對(duì)象該語(yǔ)句相當(dāng)于從緩沖過濾流對(duì)象bufin中讀取成批的數(shù)據(jù),然后賦值給字符中讀取成批的數(shù)據(jù),然后賦值給字符串變量串變量sname。而不是從數(shù)據(jù)源中一個(gè)一個(gè)讀取數(shù)據(jù)。而不是從數(shù)據(jù)源中一個(gè)一個(gè)讀取數(shù)據(jù)。 36InputStreamReader類 該類是從字節(jié)流到字符流的橋梁。該類的構(gòu)造函數(shù)以該類是從字節(jié)流到字符流的橋梁。該類的構(gòu)造函數(shù)以InputSt
34、ream類(字節(jié)類)對(duì)象為參數(shù),將字節(jié)流包裝類(字節(jié)類)對(duì)象為參數(shù),將字節(jié)流包裝(轉(zhuǎn)換)成(轉(zhuǎn)換)成Unicode字符流。例如:字符流。例如: InputStreamReader stdin=new InputStreamReader(System.in) 該語(yǔ)句相當(dāng)于用該語(yǔ)句相當(dāng)于用InputStreamReader類創(chuàng)建了一個(gè)將字節(jié)流轉(zhuǎn)類創(chuàng)建了一個(gè)將字節(jié)流轉(zhuǎn)換成換成Unicode字符流的對(duì)象字符流的對(duì)象stdin。 System.in是是System類的屬性,代表類的屬性,代表標(biāo)準(zhǔn)輸入流,標(biāo)準(zhǔn)輸入流,in又是又是InputStream類的對(duì)象,代表字節(jié)流。類的對(duì)象,代表字節(jié)流。 也就是說,將標(biāo)準(zhǔn)輸入字節(jié)流轉(zhuǎn)換成字符流。也就是說,將標(biāo)準(zhǔn)輸入字節(jié)流轉(zhuǎn)換成字符流。 37 為了提高讀取效率,通常將為了提高讀取效率,通常將InputStream
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 當(dāng)幸福來敲門觀后感合集15篇
- 巾幗標(biāo)兵先進(jìn)事跡材料集錦15篇
- 感恩父母講話稿(集合15篇)
- 扭轉(zhuǎn)治療分享會(huì)
- 培訓(xùn)學(xué)校招生宣傳
- 初級(jí)金融專業(yè)-《金融專業(yè)知識(shí)與實(shí)務(wù)》名師預(yù)測(cè)卷1117
- 初級(jí)會(huì)計(jì)經(jīng)濟(jì)法基礎(chǔ)-初級(jí)會(huì)計(jì)《經(jīng)濟(jì)法基礎(chǔ)》預(yù)測(cè)試卷325
- 智研咨詢發(fā)布-2024年中國(guó)曲軸行業(yè)市場(chǎng)競(jìng)爭(zhēng)格局、行業(yè)政策及需求規(guī)模預(yù)測(cè)報(bào)告
- 產(chǎn)業(yè)研究報(bào)告-2024年中國(guó)磁懸浮軸承行業(yè)發(fā)展現(xiàn)狀、市場(chǎng)規(guī)模、投資前景分析(智研咨詢)
- 二零二五年度家居定制銷售購(gòu)銷合同(含設(shè)計(jì)服務(wù))2篇
- 2024-2025學(xué)年人教新版高二(上)英語(yǔ)寒假作業(yè)(五)
- 江蘇省泰州市靖江市2024屆九年級(jí)下學(xué)期中考一模數(shù)學(xué)試卷(含答案)
- 《旅游資料翻譯》課件
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 微項(xiàng)目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學(xué)選擇性必修第一冊(cè)(魯科版)
- 廣東省廣州市黃埔區(qū)2024-2025學(xué)年八年級(jí)物理上學(xué)期教學(xué)質(zhì)量監(jiān)測(cè)試題
- 財(cái)務(wù)管理學(xué)(第10版)課件 第1章 總論
- 《鼻咽癌的診治》課件
- 有關(guān)信用證的案例分析
- 水中大腸桿菌的檢測(cè)實(shí)驗(yàn)報(bào)告
- 智慧體育場(chǎng)館建設(shè)方案
評(píng)論
0/150
提交評(píng)論