- 可以從其中讀入一個(gè)字節(jié)序列的對(duì)象稱為輸入流逾滥,而可以向其中寫入一個(gè)字節(jié)序列的對(duì)象叫做輸出流。抽象類InputStream视卢,OutputStream構(gòu)成了輸入輸出層次結(jié)構(gòu)的基礎(chǔ)仿滔。
- InputStream和OutputStream實(shí)現(xiàn)類一般都要覆蓋read和write方法,這兩個(gè)方法在運(yùn)行時(shí)都會(huì)阻塞槐瑞,直至讀到數(shù)據(jù)或者寫完數(shù)據(jù)熙涤。為提高效率,可以使用available方法判斷當(dāng)前是否可讀困檩,再進(jìn)行相關(guān)操作:
int byteAvailable = in.available();
if(byteAvailable){
byte [] data = new byte[byteAvailable];
in.read(data);
}
- 讀寫結(jié)束后祠挫,要使用close來關(guān)閉流,關(guān)閉輸出流的同時(shí)會(huì)沖刷輸出流的緩沖區(qū)悼沿,若不關(guān)閉可能寫出字節(jié)的最后一個(gè)包不能傳遞出去等舔。此外也可以人為使用flush方法沖刷這些輸出。
- FileInputStream和FileOutputStream可以提供附著在一個(gè)磁盤文件上的輸出流和輸入流糟趾,構(gòu)造函數(shù)中傳入文件名或者文件的完整路徑即可:
FileInputStream fin = new FileInputStream("employee.dat");
注意:windows風(fēng)格路徑要寫為c:\windows\win.ini這種格式慌植,而不能使用反斜杠,因?yàn)榉葱备苁寝D(zhuǎn)義字符义郑。
- BufferedInputStream和BufferedOutputStream 創(chuàng)建一個(gè)帶緩沖區(qū)的流蝶柿。
- 使用InputStreamReader類使用選定的unicode字符流轉(zhuǎn)換為其他編碼格式的字節(jié)流:
InputStreamReader in = new InputStreamReader(new FileinputStream("Kremlin.dat"),"ISO8859_5");
- PrintWriter類實(shí)現(xiàn)文本輸出:
PrintWriter out = new PrintWriter(new FileWriter("employee.txt"));
out.print("hello world");
這樣就將字符串寫到文件中了。PrintWriter和FileOutputStream的區(qū)別在于PrintWriter支持特定格式的輸出字符串非驮,而FileOutputStream則只支持字節(jié)級(jí)別上的讀寫交汤。