Java IO體系

Java IO(描述內(nèi)存讀寫硬盤)

IO孤页,常協(xié)作I/O管搪,是Input/Output的簡稱慎皱,即輸入/輸出。通常指數(shù)據(jù)在內(nèi)部存儲器(內(nèi)存)和外部存儲器(硬盤咱旱、優(yōu)盤等)或其他周邊設(shè)備之間的輸入和輸出确丢。

輸入/輸出是信息處理系統(tǒng)(例如計算機)與外部世界(可能是人類或另一信息處理系統(tǒng))之間的通信。

輸入是系統(tǒng)接收的信號或數(shù)據(jù)吐限,輸出則是從其發(fā)送的信號或數(shù)據(jù)鲜侥。

在Java中,提供了一些列API毯盈,可以供開發(fā)者來讀寫外部數(shù)據(jù)或文件剃毒。我們稱這些API為Java IO。

IO是Java中比較重要搂赋,且比較難的知識點赘阀,主要是因為隨著Java的發(fā)展,目前有三種IO共存脑奠。分別是BIO基公、NIO和AIO。

第一種 實現(xiàn)模式Java BIO( 同步阻塞I/O模式)

BIO 全稱Block-IO 是一種同步且阻塞的通信模式宋欺。是一個比較傳統(tǒng)的通信方式轰豆,模式簡單胰伍,使用方便。但并發(fā)處理能力低酸休,通信耗時骂租,依賴網(wǎng)速。

第二種 實現(xiàn)模式Java NIO( 同步非阻塞模式 )

Java NIO斑司,全稱 Non-Block IO 渗饮,是Java SE 1.4版以后,針對網(wǎng)絡(luò)傳輸效能優(yōu)化的新功能宿刮。是一種非阻塞同步的通信模式互站。

NIO 與原來的 I/O 有同樣的作用和目的, 他們之間最重要的區(qū)別是數(shù)據(jù)打包和傳輸?shù)姆绞健T瓉淼?I/O 以流的方式處理數(shù)據(jù)僵缺,而 NIO 以塊的方式處理數(shù)據(jù)胡桃。

面向流的 I/O 系統(tǒng)一次一個字節(jié)地處理數(shù)據(jù)。一個輸入流產(chǎn)生一個字節(jié)的數(shù)據(jù)磕潮,一個輸出流消費一個字節(jié)的數(shù)據(jù)翠胰。

面向塊的 I/O 系統(tǒng)以塊的形式處理數(shù)據(jù)。每一個操作都在一步中產(chǎn)生或者消費一個數(shù)據(jù)塊揉抵。按塊處理數(shù)據(jù)比按(流式的)字節(jié)處理數(shù)據(jù)要快得多亡容。但是面向塊的 I/O 缺少一些面向流的 I/O 所具有的優(yōu)雅性和簡單性冤今。

第三種 實現(xiàn)方式 Java AIO( 異步非阻塞I/O模型 )

Java AIO,全程 Asynchronous IO茂缚,是異步非阻塞的IO戏罢。是一種非阻塞異步的通信模式。

在NIO的基礎(chǔ)上引入了新的異步通道的概念脚囊,并提供了異步文件通道和異步套接字通道的實現(xiàn)龟糕。

三種IO的區(qū)別

首先,我們站在宏觀的角度悔耘,重新畫一下重點:

BIO (Blocking I/O):同步阻塞I/O模式讲岁。

NIO (New I/O):同步非阻塞模式。

AIO (Asynchronous I/O):異步非阻塞I/O模型衬以。

同步阻塞模式:這種模式下缓艳,我們的工作模式是先來到廚房,開始燒水看峻,并坐在水壺面前一直等著水燒開阶淘。

同步非阻塞模式:這種模式下,我們的工作模式是先來到廚房互妓,開始燒水溪窒,但是我們不一直坐在水壺前面等坤塞,而是回到客廳看電視,然后每隔幾分鐘到廚房看一下水有沒有燒開澈蚌。

異步非阻塞I/O模型:這種模式下摹芙,我們的工作模式是先來到廚房,開始燒水宛瞄,我們不一一直坐在水壺前面等瘫辩,也不隔一段時間去看一下,而是在客廳看電視坛悉,水壺上面有個開關(guān)伐厌,水燒開之后他會通知我。

阻塞VS非阻塞:人是否坐在水壺前面一直等裸影。

同步VS異步:水壺是不是在水燒開之后主動通知人挣轨。

適用場景

BIO方式適用于連接數(shù)目比較小且固定的架構(gòu),這種方式對服務(wù)器資源要求比較高轩猩,并發(fā)局限于應(yīng)用中卷扮,JDK1.4以前的唯一選擇,但程序直觀簡單易理解均践。

NIO方式適用于連接數(shù)目多且連接比較短(輕操作)的架構(gòu)晤锹,比如聊天服務(wù)器,并發(fā)局限于應(yīng)用中彤委,編程比較復(fù)雜鞭铆,JDK1.4開始支持。

AIO方式適用于連接數(shù)目多且連接比較長(重操作)的架構(gòu)焦影,比如相冊服務(wù)器车遂,充分調(diào)用OS參與并發(fā)操作,編程比較復(fù)雜斯辰,JDK7開始支持舶担。

使用方式

使用BIO實現(xiàn)文件的讀取和寫入。


使用NIO實現(xiàn)文件的讀取和寫入彬呻。


使用AIO實現(xiàn)文件的讀取和寫入

看起來還是BIO實現(xiàn)最簡單,這也是大家用的最多的方式的原因吧.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衣陶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闸氮,更是在濱河造成了極大的恐慌剪况,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件湖苞,死亡現(xiàn)場離奇詭異拯欧,居然都是意外死亡,警方通過查閱死者的電腦和手機财骨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門镐作,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藏姐,“玉大人,你說我怎么就攤上這事该贾「嵫睿” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵杨蛋,是天一觀的道長兜材。 經(jīng)常有香客問我,道長逞力,這世上最難降的妖魔是什么曙寡? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮寇荧,結(jié)果婚禮上举庶,老公的妹妹穿的比我還像新娘。我一直安慰自己揩抡,他們只是感情好户侥,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著峦嗤,像睡著了一般蕊唐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烁设,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天替梨,我揣著相機與錄音,去河邊找鬼署尤。 笑死耙替,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的曹体。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼硝烂,長吁一口氣:“原來是場噩夢啊……” “哼箕别!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起滞谢,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤串稀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狮杨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體母截,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年橄教,在試婚紗的時候發(fā)現(xiàn)自己被綠了清寇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喘漏。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖华烟,靈堂內(nèi)的尸體忽然破棺而出翩迈,到底是詐尸還是另有隱情,我是刑警寧澤盔夜,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布负饲,位于F島的核電站,受9級特大地震影響喂链,放射性物質(zhì)發(fā)生泄漏返十。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一椭微、第九天 我趴在偏房一處隱蔽的房頂上張望洞坑。 院中可真熱鬧,春花似錦赏表、人聲如沸检诗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逢慌。三九已至,卻和暖如春间狂,著一層夾襖步出監(jiān)牢的瞬間攻泼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工鉴象, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留忙菠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓纺弊,卻偏偏與公主長得像牛欢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淆游,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容