Java IO兩大體系,javaio兩大

來源:互聯網
上載者:User

Java IO兩大體系,javaio兩大
區別

一套是input/output stream 體系,一套是reader/writer體系,兩者的區別是

stream負責的是位元組流的資料,reader/writer負責的是字元流。


設計模式decorator模式

該模式主要用於在不改變已有的component設計和代碼的情況下,不斷的增加附屬功能。打個比喻,就像你有一副畫,為它配一個或者多個不同的畫框。

具體可以參考這裡:http://www.cnblogs.com/bastard/archive/2012/02/02/2336150.html

componnet要支援decorator的基本介面才行,這是設計時必須要做的。


兩套IO 體系都是典型的decorator模式。下面的文章是介紹的比較好的。

http://my.oschina.net/gao0516/blog/136103


adapter模式

該模式用於將一個對象轉換成另一個對象能用使用的介面。兩種體系內部均有這樣的實現。同時兩種模式互相聯通也依賴這種模式。主要是兩個類:

InputStreamReader和OutputStreamWriter

從名字都可以看出來,既有stream又有reader/writer, 典型跨體系adapter。


舉個例子,如果想用writer寫檔案,代碼如下:

    static private void test2() {        try {            PrintWriter printWriter = new PrintWriter("/home/dean/test2.log");            printWriter.println("hello, 中國");            printWriter.flush();            printWriter.close();        } catch (IOException e) {            System.out.println(e.getMessage());        }    }

運行後,test2.log檔案被建立,裡面出現了hello,中國。


但是有一個問題,PrintWriter的建構函式不接受append選項,因此每次都是將檔案清除後重新寫,不能支援追加寫。而stream體系裡面支援。因此這裡採用adapter模式來混用使用兩種體系。

    static private void test1() {        try {            Writer w = new OutputStreamWriter(new FileOutputStream("/home/dean/test1.log", true), "UTF-8");            PrintWriter printWriter = new PrintWriter(w);            printWriter.println("hello, 中國");            printWriter.flush();            printWriter.close();        } catch (IOException e) {            System.out.println(e.getMessage());        }    }

利用了FileOutputStream支援append特性,用OutputStreamWriter做adapter,現在可以了。


所以看上去reader/writer體系功能側重於文本字元處理,而對一些流操作的進階功能,還是要依賴stream體系的配合。








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.