流這章比較多,但分層比較清楚,流可以從三個(gè)角度去分層;從流的方向上可以分為輸入流和輸出流(以程序?yàn)閰⒄眨粡牧鞯奶幚韱挝簧峡梢苑譃樽止?jié)流和字符流(字節(jié)byte,字符char,一字符(16位)等于兩字節(jié)(8位));從流的功能上可以分為節(jié)點(diǎn)流和處理流(節(jié)點(diǎn)流必須直接連在數(shù)據(jù)源上(文件,數(shù)據(jù)庫(kù),網(wǎng)絡(luò)),而處理流可以套接在節(jié)點(diǎn)流或者處理流上,且處理流的處理能力比節(jié)點(diǎn)流要強(qiáng)大)。  

    這章主要學(xué)好4個(gè)接口,分別是:InputStream,OutputStream,Reader,Writer。

    我們從處理單位的角度來(lái)分別說(shuō)明:

    InputStream接口包含F(xiàn)ileInputStream(文件流),PipedInputStream(管道流),ByteArrayInputStream(內(nèi)存流),ObjectInputStream(包裝類流),FilterInputStream(過(guò)濾流)里包括DataInputStream(數(shù)據(jù)流)和BufferedInputStream(緩沖流)等;OutputStream接口包含F(xiàn)ileOutputStream(文件流),PipedOutputStream(管道流),ByteArrayOutputStream(內(nèi)存流),ObjectOutputStream(包裝類流),PrintStream(打印流),FilterOutputStream(過(guò)濾流)里包括DataOutputStream(數(shù)據(jù)流)和BufferedOutputStream(緩沖流)等。

    Reader接口包含F(xiàn)ileReader(文件流),PipedReader(管道流),CharArrayReader(內(nèi)存流),BufferedReader(緩沖流),StringReader(字符串流);Writer接口包含F(xiàn)ileWriter(文件流),PipedWriter(管道流),CharArrayWriter(內(nèi)存流),BufferedWriter(緩沖流),StringWriter(字符串流),PrintWriter(打印流)等。

    我們?cè)購(gòu)牧鞯姆较蛏蟻?lái)分析他們的普通方法:

    輸入流基本都有這幾個(gè)方法:read()讀一個(gè)字節(jié),read(byte[] byte)把所有內(nèi)容讀到byte數(shù)組里,read(byte[] byte,int start,int len)把所有內(nèi)容讀到byte數(shù)組的(start位置長(zhǎng)度為len)里;read()讀一個(gè)字符,read(char[] char)把所有內(nèi)容讀到char數(shù)組里,read(char[] char,int start,int len)把所有內(nèi)容讀到char數(shù)組的(start位置長(zhǎng)度為len)里。

    輸出流基本都有這幾個(gè)方法:write(int a)寫入一個(gè)整數(shù),write(byte[] byte)把byte數(shù)組里所有內(nèi)容寫到輸出流中,write(byte[] byte,int start,int len)把byte數(shù)組的(start位置長(zhǎng)度為len)里所有內(nèi)容寫到輸出流中;write(int a)寫入一個(gè)字符,write(char[] char)把char數(shù)組里所有內(nèi)容寫到輸出流中,write(char[] char,int start,int len)把char數(shù)組的(start位置長(zhǎng)度為len)里所有內(nèi)容寫到輸出流中,write(String str)把一個(gè)字符串寫到輸出流中;flush()和close(),每開(kāi)啟一個(gè)輸出流的時(shí)候,在不想用他的時(shí)候一定要flush()和close(),這樣會(huì)將輸出流內(nèi)的內(nèi)容刷到目的地(close()方法也有flush功能)。

    若需要將字節(jié)流轉(zhuǎn)換成字符流則可以用InputStreamReader(OutputStreamWriter),需要將InputStream(OutputStream)套接在InputStream的構(gòu)造函數(shù)里。
    Object流需要將添加的Object序列化,也就是要實(shí)現(xiàn)Serializable接口(他沒(méi)有任何虛方法,只是一個(gè)標(biāo)志性接口),才能將Object添加到流里面。

    這就是流這章的主要內(nèi)容,希望能對(duì)大家有所幫助。