轉(zhuǎn)自下面的Java IO總結(jié)博文
學(xué)習(xí)JAVA IO之前必須要先學(xué)習(xí)裝飾模式
BufferedReader in=new BufferedReader(new StringReader(BufferedInputFile.read(file)));
上面是Java中創(chuàng)建一個(gè)文件對(duì)象的語(yǔ)句,Java在IO庫(kù)的設(shè)計(jì)中使用了裝飾模式莲兢,每一個(gè)嵌套在內(nèi)的類(lèi)都提供了自己的功能续膳。所以如果你不懂裝飾模式,理解這些過(guò)于困難谒兄。
可以參考下面這個(gè)鏈接社付,簡(jiǎn)單理解裝飾模式
還有這篇對(duì)IO總結(jié)的很好的博文,可以先看一遍有個(gè)大致的理解再去看書(shū)Java IO總結(jié)
創(chuàng)建對(duì)象的要點(diǎn)
來(lái)自上面的設(shè)計(jì)模式博文
理解了裝飾模式燕鸽,再掌握J(rèn)ava IO 中那些類(lèi)屬于繼承類(lèi)啼辣,哪些類(lèi)屬于裝飾器類(lèi),就知曉如何創(chuàng)建文件對(duì)象了疼燥。
輸入輸出字節(jié)流
輸入輸出字節(jié)流
輸入字節(jié)流
繼承類(lèi)是基本類(lèi)灵嫌,裝飾類(lèi)是用來(lái)給基本類(lèi)增加功能的氛驮,比如果籃是基本類(lèi),水果是裝飾類(lèi)
Basket basket=new Orange(new Apple(new Basket()))矫废;
整個(gè)流程可以表示為
- 創(chuàng)建一個(gè)果籃
- 果籃中放入蘋(píng)果
- 在2中放入橘子
通過(guò)一點(diǎn)一點(diǎn)的裝飾為果籃添加功能
繼承類(lèi)有:
- ByteArrayInputArray
- StringBufferInputStream
- FileInputStream
裝飾類(lèi)有:
- ObjectInputStream
- FilterInputStream及其子類(lèi)
輸出字節(jié)流
繼承類(lèi)有:
- ByteArrayOutputStream
- FileOutputStream
裝飾類(lèi)有:
- ObjectOutputStream
- FilterOutputStream及其子類(lèi)
輸入輸出字符流
輸入輸出字符流
輸入字符流
繼承類(lèi):
- CharReader
- StringReader
裝飾類(lèi):
- BufferedReader
- FilterReader
InputStreamReader是連接字符流和字節(jié)流的橋梁砰蠢,F(xiàn)ileReader用來(lái)將FileInputStream轉(zhuǎn)變?yōu)镽eader。
輸出字符流
繼承類(lèi):
- CharArrayWriter
- StringWriter
裝飾類(lèi):
- Buffered
OutputStreamWriter是連接OutputStream到Writer的橋梁赵誓。
等理解加深一點(diǎn)再來(lái)修改