java中IO流体系以及常用实现类
一、體系
??分為字節(jié)流和字符流,也可以說是分為輸入流和輸出流。字節(jié)流InputStream,OutputStream以字節(jié)形式操作二進(jìn)制文件非常合適。字符流Writer和Reader操作文本比較適宜。輸入輸出流的參照物是內(nèi)存,把東西拿到內(nèi)存里面來的就是輸入流,從內(nèi)存中拿東西出去的就是輸出流。
??所有IO的實(shí)現(xiàn)類子類后綴都是上述4個(gè)類,都是抽象類。結(jié)構(gòu)還是比較清晰的。IO 實(shí)現(xiàn)了對(duì)文件的讀寫操作。
二、常用實(shí)現(xiàn)類
我們用上述4個(gè)類的子類來實(shí)際應(yīng)用。
應(yīng)用的思路是:
先用File類new一個(gè)文件,但是,一般不用明寫出來。直接用初級(jí)實(shí)現(xiàn)類關(guān)聯(lián)文件(如FileInputStream),然后緩沖字節(jié)流包裝初級(jí)類(如BufferedInputStream)。
InputStream:
FileInputStream,初級(jí)實(shí)現(xiàn)類,一個(gè)字節(jié)一個(gè)字節(jié)的操作,性能較低。
BufferedInputStream,有緩沖的字節(jié)輸出流,性能較高。
ObjectInputStream,對(duì)象字節(jié)輸入流,把序列化的對(duì)象讀取出來,即反序列化。如果序列化的對(duì)象有版本號(hào),則必須和版本號(hào)保持一致。
OutputStream:
FileOutputtStream,初級(jí)實(shí)現(xiàn)類,一個(gè)字節(jié)一個(gè)字節(jié)的操作,性能較低。
BufferedOutputStream,有緩沖的字節(jié)輸出流,性能較高。
ObjectInputStream,對(duì)象字節(jié)輸出流,序列化對(duì)象用的。意思是把對(duì)象保存到文件。對(duì)象必須實(shí)現(xiàn)Serializable接口。
Writer:
FileWriter,單個(gè)字符的寫入字符,性能較低。
BufferedWriter,緩沖字符流,性能較高。
InputStreamWriter,轉(zhuǎn)換流,指定寫入文件的編碼,解決亂碼問題。
Reader:
FileReader,單個(gè)字符的讀取字符,性能較低。
BufferedReader,緩沖字符流,性能較高。
InputStreamWriter,轉(zhuǎn)換流,指定以什么編碼方式讀取文件,解決亂碼問題。
附:打印流
PrintWriter,打印流。鍵盤輸入什么就是什么,最方便的字符輸入流。而且性能較高。
2023.1.4加更
- 節(jié)點(diǎn)流。
- 直接操作文件,但功能較為簡(jiǎn)單,效率較低。
- 處理流。
- 不能直接操作文件,而是包裝節(jié)點(diǎn)流使其更高效,更強(qiáng)大。采用修飾者模式。
- 使用完畢,關(guān)閉最外層的流即可。
- 對(duì)象流。
- 序列化對(duì)象用的,即保存對(duì)象的數(shù)值和類型。
- 轉(zhuǎn)換流。
- 指定編碼形式來讀取文件,解決亂碼問題。
- 底層操作仍然是字符流,屬于包裝流一類,不能直接操作文件。只有節(jié)點(diǎn)流可以直接操作文件。
- 打印流
- 打印流只有輸出流。輸出比較方便。可以重定向System.out的輸出位置。
總結(jié)
以上是生活随笔為你收集整理的java中IO流体系以及常用实现类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 10g RAC 维护工具完
- 下一篇: 4274. 【NOIP2015模拟10.