這段時間學(xué)習(xí)JAVA的流類,感覺各種流五花八門看得眼花,特此簡單整理。
JAVA的I/O流庫提供大量的流類(java.io)。其中,所有輸入流是抽象類InputStream(字節(jié)輸入流)或抽象類Reader(字符輸入流)的子類,而所有的輸出流類都是抽象類OutputStream(字節(jié)流)和抽象類Write(字符流)的子類。
字節(jié)流:
- FileInputSrteam
功能為從文件中以字節(jié)的形式讀取數(shù)據(jù),利用 .read()方法將讀取的字節(jié)返回,終止標(biāo)志為-1返回值。
- FileOutputstream
功能為將內(nèi)存中的數(shù)據(jù)以字節(jié)流的形式送到目標(biāo)文件,利用 .write(byte [] b)方法輸送字節(jié)到數(shù)組b,
- System.in
一個很原始的字節(jié)流(個人感情因素。。。),是System的一個類成員,原型為
public final static InputStream in = nullInputStream();
指向的源為標(biāo)準(zhǔn)輸入:鍵盤
- System.out
同樣是一個很原始的字節(jié)流。。。。
public final static PrintStream out = nullPrintStream();
輸出的目的地是屏幕文本
字符流:
字節(jié)流本身的局限性是不能直接操作Unicode字符,例如漢字是占用兩個字節(jié)空間,使用字節(jié)流讀取不當(dāng)有可能發(fā)生亂碼現(xiàn)象。因此JAVA提供了比較高級的字符流來處理,在Unicode中一個漢字占據(jù)一個字符,因此可以保證正確處理。
- FileReader
抽象類Reader的子類,從制定目標(biāo)按字符讀取數(shù)據(jù),順序讀取文件中的字符直至流關(guān)閉。
public class FileReader extends InputStreamReader
- FileWrite
抽象類Write的子類,以字符形式輸送數(shù)據(jù)到目的地直至流關(guān)閉。
public class FileWriter extends OutputStreamWriter
-------------------------------------------------------------------------------------
System.in是指向鍵盤的字節(jié)輸入流,如果我們需要從鍵盤讀取字符,可以在.in流上“套一根管子”。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 利用.in來構(gòu)造一個字符流的“管子”。這樣從鍵盤就能以字符的形式讀入數(shù)據(jù)。