JAVA - IO包的學(xué)習(xí)引導(dǎo)文章(摘抄)
什么是IOIO(Input/Output)是計(jì)算機(jī)輸出/輸出的接口。Java的核心庫(kù)java.io提供了全面的IO接口,包括:文件讀寫(xiě),標(biāo)準(zhǔn)設(shè)備輸出等等。Java中IO是以流為基礎(chǔ)進(jìn)行輸入輸出的,所有數(shù)據(jù)被串行化寫(xiě)入輸出流,或者從輸入流讀入。此外,Java也對(duì)塊傳輸提供支持,在核心庫(kù) java.nio中采用的便是塊IO。關(guān)于NIO我們?cè)诤竺孢€有專門(mén)的討論。
流IO的好處是簡(jiǎn)單易用,缺點(diǎn)是效率較低。塊IO效率很高,但編程比較復(fù)雜。
Java IO模型
Java的IO模型設(shè)計(jì)非常優(yōu)秀,它使用Decorator模式,按功能劃分Stream,您可以動(dòng)態(tài)裝配這些Stream,以便獲得您需要的功能。例如,您需要一個(gè)具有緩沖的文件輸入流,則應(yīng)當(dāng)組合使用FileInputStream和BufferedInputStream。
Java的IO體系分Input/Output和Reader/Writer兩類,區(qū)別在于Reader/Writer在讀寫(xiě)文本時(shí)能自動(dòng)轉(zhuǎn)換內(nèi)碼。基本上,所有的IO類都是配對(duì)的,即有XxxInput就有一個(gè)對(duì)應(yīng)的XxxOutput。
Java IO教程
如果您對(duì)Decorator模式非常了解,就能輕易地看出Java的IO類結(jié)構(gòu):根接口是InputStream/OutputStream,充當(dāng)數(shù)據(jù)源的IO類有 FileInputStream/FileOutputStream, ByteArrayInputStream/ByteArrayOutputStream等,充當(dāng)裝飾功能的IO類有 BufferedInputStream/BufferedOutputStream, DataInputStream/DataOutputStream等,它們都是繼承裝飾接口 FilterInputStream/FilterOutputStream。使用IO時(shí),首先創(chuàng)建一個(gè)數(shù)據(jù)源IO,然后根據(jù)需要的功能創(chuàng)建裝飾類IO,其構(gòu)造函數(shù)的參數(shù)為已創(chuàng)建的數(shù)據(jù)源IO。我們以創(chuàng)建一個(gè)具有緩沖的文件輸入流為例,假定需要從磁盤(pán)讀取文件“C:\log.txt”:
// 創(chuàng)建一個(gè)FileInputStream: FileInputStream fileInput = new FileInputStream("C:\\log.txt"); // 創(chuàng)建一個(gè)BufferedInputStream: BufferedInputStream bufferedInput = new BufferedInputStream(fileInput); // 現(xiàn)在得到的bufferedInput即是具有緩沖的文件輸入流 |
InputStream input = new BufferedInputStream( new FileInputStream("C:\\log.txt")); // 現(xiàn)在得到的input即是具有緩沖的文件輸入流 |
posted on 2005-03-27 10:30 李貝 閱讀(606) 評(píng)論(0) 編輯 收藏 所屬分類: JAVA