天天看點

java io流中涉及的設計模式java io流中涉及的設計模式

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算容易的哈。
           

繼續閱讀