JAVA - IO包的學習引導文章(摘抄)

來源:互聯網
上載者:User
什麼是IO   IO(Input/Output)是電腦輸出/輸出的介面。Java的核心庫java.io提供了全面的IO介面,包括:檔案讀寫,標準裝置輸出等等。Java中IO是以流為基礎進行輸入輸出的,所有資料被序列化寫入輸出資料流,或者從輸入資料流讀入。此外,Java也對塊傳輸提供支援,在核心庫java.nio中採用的便是塊IO。關於NIO我們在後面還有專門的討論。  流IO的好處是簡單易用,缺點是效率較低。塊IO效率很高,但編程比較複雜。Java IO模型   Java的IO模型設計非常優秀,它使用Decorator模式,按功能劃分Stream,您可以動態裝配這些Stream,以便獲得您需要的功能。例如,您需要一個具有緩衝的檔案輸入資料流,則應當組合使用FileInputStream和BufferedInputStream。  Java的IO體系分Input/Output和Reader/Writer兩類,區別在於Reader/Writer在讀寫文本時能自動轉換內碼。基本上,所有的IO類都是配對的,即有XxxInput就有一個對應的XxxOutput。Java IO教程   如果您對Decorator模式非常瞭解,就能輕易地看出Java的IO類結構:根介面是InputStream/OutputStream,充當資料來源的IO類有FileInputStream/FileOutputStream,ByteArrayInputStream/ByteArrayOutputStream等,充當裝飾功能的IO類有BufferedInputStream/BufferedOutputStream,DataInputStream/DataOutputStream等,它們都是繼承裝飾介面FilterInputStream/FilterOutputStream。使用IO時,首先建立一個資料來源IO,然後根據需要的功能建立裝飾類IO,其建構函式的參數為已建立的資料來源IO。我們以建立一個具有緩衝的檔案輸入資料流為例,假定需要從磁碟讀取檔案“C:\log.txt”:// 建立一個FileInputStream:FileInputStream fileInput = new FileInputStream("C:\\log.txt"); // 建立一個BufferedInputStream:BufferedInputStream bufferedInput = new BufferedInputStream(fileInput); // 現在得到的bufferedInput即是具有緩衝的檔案輸入資料流  或者進一步簡寫如下:InputStream input = new BufferedInputStream(    new FileInputStream("C:\\log.txt"));// 現在得到的input即是具有緩衝的檔案輸入資料流  在您對Java的IO有了總體瞭解後,我們推薦您看看教程Introduction to Java I/O和I/O: Reading and Writing。Java NIO編程 NIO提供了對塊IO的支援,使用塊IO的好處是效率更高,而且Java的NIO將直接叫用作業系統提供的許多進階IO介面,支援塊傳輸,讀寫鎖定,非同步IO等功能,效率非常高。NIO的編程模型是通道和緩衝區,推薦您閱讀Getting started with new I/O(中文)。

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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