流這章比較多,但分層比較清楚,流可以從三個角度去分層;從流的方向上可以分為輸入流和輸出流(以程序為參照);從流的處理單位上可以分為字節流和字符流(字節byte,字符char,一字符(16位)等于兩字節(8位));從流的功能上可以分為節點流和處理流(節點流必須直接連在數據源上(文件,數據庫,網絡),而處理流可以套接在節點流或者處理流上,且處理流的處理能力比節點流要強大)。  

    這章主要學好4個接口,分別是:InputStream,OutputStream,Reader,Writer。

    我們從處理單位的角度來分別說明:

    InputStream接口包含FileInputStream(文件流),PipedInputStream(管道流),ByteArrayInputStream(內存流),ObjectInputStream(包裝類流),FilterInputStream(過濾流)里包括DataInputStream(數據流)和BufferedInputStream(緩沖流)等;OutputStream接口包含FileOutputStream(文件流),PipedOutputStream(管道流),ByteArrayOutputStream(內存流),ObjectOutputStream(包裝類流),PrintStream(打印流),FilterOutputStream(過濾流)里包括DataOutputStream(數據流)和BufferedOutputStream(緩沖流)等。

    Reader接口包含FileReader(文件流),PipedReader(管道流),CharArrayReader(內存流),BufferedReader(緩沖流),StringReader(字符串流);Writer接口包含FileWriter(文件流),PipedWriter(管道流),CharArrayWriter(內存流),BufferedWriter(緩沖流),StringWriter(字符串流),PrintWriter(打印流)等。

    我們再從流的方向上來分析他們的普通方法:

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

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

    若需要將字節流轉換成字符流則可以用InputStreamReader(OutputStreamWriter),需要將InputStream(OutputStream)套接在InputStream的構造函數里。
    Object流需要將添加的Object序列化,也就是要實現Serializable接口(他沒有任何虛方法,只是一個標志性接口),才能將Object添加到流里面。

    這就是流這章的主要內容,希望能對大家有所幫助。