根據(jù)java類(lèi)之間的關(guān)系,整理出java常用IO流之間的UML類(lèi)圖

初學(xué)UML,如果有錯(cuò)的話請(qǐng)諒解,這里面只寫(xiě)了關(guān)鍵的方法。
字節(jié)輸入流:InputStream類(lèi)為所有自己輸入流的父類(lèi)
主要方法有三個(gè):
int read()
從流里面讀出一個(gè)字節(jié)。不推薦使用
int read(byte[] b)
將數(shù)據(jù)讀入到字節(jié)數(shù)組中,并返回所讀的字節(jié)數(shù)
inte read(byte[] b,int off,int len)
off 從哪里開(kāi)始讀
len讀取多少
將輸入流中最多l(xiāng)en個(gè)數(shù)據(jù)字節(jié)讀入字節(jié)數(shù)組
其他方法:
void close()
關(guān)閉流資源
int available()
返回不受阻塞地從此輸入流讀取的字節(jié)數(shù)
long skip(long n)
跳過(guò)和放棄此輸入流中的n個(gè)數(shù)據(jù)字節(jié),該方法有可能失效
boolean markSupported()
測(cè)試此輸入流是否支持mark和reset方法
void mark(int n)
在此輸入流中標(biāo)記當(dāng)前的位置
void reset()
將此流重新定位到對(duì)此輸入流最后調(diào)用mark方法時(shí)的位置。
字節(jié)輸出流:OutputStream是所有字節(jié)輸出流的父類(lèi)。
三個(gè)基本的write()方法:
void write(int n)
將指定的字節(jié)寫(xiě)入此輸出流。
void write(byte[] b)
將b.length個(gè)字節(jié)從指定的字節(jié)數(shù)組寫(xiě)入此輸出流
void write(byte[] b,int off,int len)
將指定字節(jié)數(shù)組中從偏移量off開(kāi)始的len個(gè)字節(jié)寫(xiě)入此輸出流
其他方法:
void close()
關(guān)閉此輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源
void flush()
刷新此輸出流并強(qiáng)制寫(xiě)出所有緩沖的輸出字節(jié)
文件輸入輸出流:FileInputStream和FileOutputStream,要構(gòu)造一個(gè)FileInputStream,所關(guān)聯(lián)的文件必須存在并且可讀。
FileInputStream fis = new FileInputStream("demo.java");
要構(gòu)造一個(gè)FileOutputStream,而輸出文件已經(jīng)存在,則它將被覆蓋
FileOutputStream fos = new FileInputStream("results.dat");
想要以追加的方式寫(xiě),則需要一個(gè)額外的參數(shù),如:
FileOutputStream outfile = new FileOutputStream("results.dat",true);
字符流:Reader和Writer所有字符流的父類(lèi)型。
java技術(shù)使用Unicode來(lái)表示字符串和字符,而且提供16位版本的流,以便用類(lèi)似的方法處理字符。如果構(gòu)造了一個(gè)連接到流的Reader和Writer,轉(zhuǎn)換規(guī)則會(huì)在使用缺省平臺(tái)所定義的字節(jié)編碼和Unicode之間切換。
橋梁流:InputStreamReader和OutputStreamWriter(字節(jié)流轉(zhuǎn)換成字符流的轉(zhuǎn)換器)
這兩個(gè)類(lèi)不是用于直接輸入輸出的,他是將字節(jié)流轉(zhuǎn)換成字符流的橋轉(zhuǎn)換器,并可以指定編解碼方式。
逐行讀寫(xiě)流:BufferedReader/BufferedWriter
以上兩個(gè)都是過(guò)濾流,需要用其他的節(jié)點(diǎn)流來(lái)作為參數(shù)的構(gòu)造對(duì)象。
BufferedReader的方法:readLine():String,當(dāng)他的返回值是null時(shí),就表示讀取完畢了。要注意,在寫(xiě)入時(shí)要注意寫(xiě)換行符,否則會(huì)出現(xiàn)阻塞。
BufferedWriter的方法:newLine(),這個(gè)方法會(huì)寫(xiě)出一個(gè)換行符。
管道流:線程交互的時(shí)候使用
PipedInputStream/PipedOutputStream
傳送輸出流可以連接到傳送輸入流,以創(chuàng)建通信管道。傳送輸出流是管道的發(fā)送端。通常,數(shù)據(jù)由某個(gè)線程寫(xiě)入PipedOutputStream對(duì)象,并由其他線程從連接的PipedInputStream讀取。