java io流中涉及的設計模式
介紹
先看一段代碼,檢視其中涉及到的模式
public void testInputStreamReader() throws Exception {
private static final String SEPARATOR = File.separator;
File file = new File("e:" + SEPARATOR + "io" + SEPARATOR + "test.txt");
//BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
// 備注上面這個初始化過程就是多次使用包裝來完成的,不推薦這麼寫,會讓新手看不懂。
//1、獲得子節輸入流
FileInputStream fileInputStream=new FileInputStream(file);
//2、構造轉換流(是繼承Reader的)
InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream);
//3、 構造緩沖字元流
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
//備注1、2兩步驟展現出了擴充卡模式
//2步驟展現了InputStreamReader類具有将子節輸入流轉換為字元輸入流的功能
//2、3兩步驟展現了裝飾模式(wrapper包裝模式)
}
io中的擴充卡模式
由于InputStream是位元組流不能享受到字元流讀取字元那麼便捷的功能,是以借助
InputStreamReader将其轉為Reader子類,是以可以擁有便捷操作文本檔案方法。
OutputStream同理。
擴充卡模式
//TODO
io中的裝飾(包裝)模式
将InputStream位元組流包裝為BufferedReader過程就裝飾的過程。一開始
InputStream隻有read一個位元組的方法,包裝為Reader之後擁有read一個字元的功
能,在包裝成BufferedReader之後就擁有read一行字元串功能。OutputStream同理
裝飾模式
//TODO
總結
java io流操作對于新手來說可能看到有那麼多接口、抽象類、和類可能會不知道從何下
手,我個人的見解是了解好面向對象(對IO流接口、類的層次結構理清楚)、弄清楚源和
目标(輸入和輸出方向)、以及裝飾和擴充卡模式那麼掌握好io流操作并不會很難。相比
于并發而言io算容易的哈。