日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

图学java基础篇之IO

發布時間:2023/11/30 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图学java基础篇之IO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java io體系


如圖可以看出,java的io按照包來劃分的話可以分為三大塊:io、nio、aio,但是從使用角度來看,這三塊其實揉雜在一起的,下邊我們先來概述下這三塊:

  • io:主要包含字符流和字節流,我們常用的文件讀寫,流處理等都要用到,也是本次介紹的重點。jdk1.7之后的io底層部分類經已改為使用阻塞的nio實現了
  • nio:jdk1.4后加入,多路非阻塞(多路IO復用模型),此外還實現了buffer、channel、selector、內存映射文件等實現。我們直接使用nio多數情況用于網路編程。
  • aio:jdk1.7支持,又叫做nio2,實現了異步非阻塞io。較nio更高效,也主要用于網絡編程。

由于本次主要介紹java基本的io類結構,io類的實現相對簡單(主要是字節或者字符數組的操作),而nio和aio更多時候我們關注的是網絡編程,要想理解需要對unix網絡模型、異步和阻塞等有比較清晰的理解,因此并不會花大量篇幅介紹各個類,示例也僅會給出鏈接。
快寫完的時候看到的一篇,寫的贊,果然水平還差的遠:深入分析 Java I/O 的工作機制

io類結構


常用的類不在介紹,下邊主要介紹一些有特殊功能的類

PipedWriter,PipedReader

管道輸入流,熟悉linux系統應該看到pipe應該就明白了,可以實現線程間通信,需要和PipedReader配套使用。詳解和示例

FilterReader,FilterWriter

根據名字也能看出來,目的事項實現一個流過濾器,但是你會發現其實是個抽象類,并沒有實現,這里只是提供了接口。掃了一下發現jdk里邊只有Utility的一個JavaWriter的靜態類實現了,其功能是將字節轉換成有效的java字符。

CharArrayReader,CharArrayWriter

將字節數組作為輸入或輸出流處理,一般作為中間值,用來將字符數組和其他IO字符處理類轉換。下邊的ByteArrayInputStream與此類似,不過處理的是字節數組。詳解和示例

PushbackReader,PushbackInputStream

具有回推功能的IO處理類,可以將已讀取過的數據再回推到緩沖區中,重復讀取(注意一般的流都是單向的,一旦讀取出來就不能再讀了)。詳解和示例

DataInputStream,DataOutputStream

提供了按照類型或編碼讀取寫入文件的方法,如byte[]、int、short、char、byte、UTF等類型或編碼的讀寫。詳解和示例

SequenceInputStream

如其名字:順序輸入流,改類允許將多個輸入流作為輸入,并按照順序處理多個流,使用的時候當做一個流處理。詳解和示例

RandomAccessFile

該類與其他IO類有較大不同,其支持隨機讀寫,對于格式化的記錄文件讀取很有優勢。此外由于其底層的操作已經改為由nio的FileChannel實現,因此在處理大文件的時候經常使用RandomAccessFile和MappedByteBuffer來讀取,不僅讀取速度更快,而且能夠避免文件過大導致內存溢出。詳解和示例

其他參考博文(侵刪)
  • https://www.ibm.com/developerworks/cn/java/j-lo-javaio/
  • http://www.cnblogs.com/kuangdaoyizhimei/p/4034232.html
  • http://www.cnblogs.com/kuangdaoyizhimei/p/4035611.html

nio和aio相關


上圖是整理的nio與aio的一些關鍵點,瞟一眼就好,詳細的nio講解可參考: Java NIO使用及原理分析

轉載于:https://www.cnblogs.com/good-temper/p/4947090.html

總結

以上是生活随笔為你收集整理的图学java基础篇之IO的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。