圖學java基礎篇之IO

java io體系

20151106p1.png
如圖可以看出,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類結構

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

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相關

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

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397303.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397303.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

boot界面上下鍵調節鍵不能動_為什么電腦一開機就自動進入BIOS界面

電腦故障的問題表現形式很多,比如說為什么電腦藍屏,為什么電腦一開機就自動進入BIOS界面等。這些問題往往另很多網友不知所措。今天小編就針對電腦一開機就自動進入BIOS界面的問題,教下大家具體的解決方法。1、你的BIOS電池沒有電了。解決方法…

ArcEngine數據刪除幾種方法和性能比較

轉自原文 ArcEngine數據刪除幾種方法和性能比較 一、 幾種刪除方法代碼 1. 查詢結果中刪除 private void Delete1(IFeatureClass PFeatureclass) { IQueryFilter pQueryFilter new QueryFilterClass(); pQueryFilter.WhereClause "objectID<" DeleteNum; IFe…

計算機組成原理中英對照篇,信息科學系課程介紹(中英對照).doc

文檔介紹&#xff1a;信息科學系課程介紹(中英對照)序號:1課程編碼:14001010課程名稱:計算機基礎學分:1周學時:2開課系部:信息科學系預修課程:無修讀對象:信息管理與信息系統專業本科生課程簡介:主要介紹計算機發展歷史、常用操作系統、辦公和其它應用軟件、等內容。通過本課程…

句子相似度--余弦相似度算法的實現

1、余弦相似度余弦距離&#xff0c;也稱為余弦相似度&#xff0c;是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。余弦值越接近1&#xff0c;就表明夾角越接近0度&#xff0c;也就是兩個向量越相似&#xff0c;這就叫"余弦相似性"。 上圖兩…

python之模塊calendar(匯集了日歷相關的操作)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #calendar日歷模塊import calendar#3個大類&#xff1a; calendar.Calendar(firstweekday0) calendar.TextCalendar(firstweekday0) calendar.HTMLCalendar(firstweekday0)#返回某月日歷 cal calendar.month(2011, 11) print ca…

紅帽436——HA高可用集群之概念篇

一、集群概念&#xff1a;集群&#xff1a;提高性能&#xff0c;降低成本&#xff0c;提高可擴展性&#xff0c;增強可靠性&#xff0c;任務調度室集群中的核心技術。集群作用:保證業務不斷 集群三種網絡&#xff1a;業務網絡,集群網絡,存儲網絡 二、集群三種類型&#xff1a;…

計算機網絡的構成教學反思,《計算機網絡知識》教學反思.doc

文檔介紹&#xff1a;《計算機網絡知識》教學反思本課時以理論性內容為主,在日常教學過程中往往會以課本宣讀為主,很難引起學生的學****興趣。然而在教學中若能夠合理的采用多種教學方式,做到理論聯系實際,將達到良好的教學效果。我在本節課教學中,以我校的校園網為模型,充分利…

按季度分類匯總_2019年純堿行業相關上市公司季報 與半年報情況匯總

2019年純堿行業相關上市公司季報與半年報情況匯總經百川盈孚統計&#xff0c;目前純堿行業相關上市公司共計11家(包含三家ST股)&#xff0c;已經全部公布2019年一季度報告。2019年上半年度報告僅五家公司公布&#xff0c;其中包含&#xff1a;大連大化、山東海化、華昌化工、湖…

抖音C#版,自己抓第三方抖音網站

感謝http://dy.lujianqiang.com技術支持 文章更新&#xff1a;http://dy.lujianqiang.com這個服務器已經關了&#xff0c;現在沒用了 版權歸抖音公司所有&#xff0c;該博客只是為交流學習所使用,編譯后的內容將24小時內刪除 該程序所獲取到的內容或視頻歸Beijing Microlive Vi…

linux命令-vim命令模式

編輯模式下 按 “esc” 進去命令模式 &#xff1a;wq 保存并退出 &#xff1a;w 保存 已寫入 &#xff1a;q&#xff01;不保存強制退出 &#xff1a;wq&#xff01; 強制保存退出 &#xff1a;set nu 顯示行號 &#xff1a;set nonu 去掉行號 &#xff1a;nohl 取消高亮 /字…

ai在計算機教學中的應用,淺談人工智能在教育中的應用

淺談人工智能在教育中的應用孫立友摘要&#xff1a;隨著人工智能技術的進步&#xff0c;以及研究的深入和在教育領域的逐步推廣&#xff0c;對教育領域產生了深遠的影響。人工智能對于彌補當前教育存在的種種缺陷和不足&#xff0c;推動教育發展改革和教學現代化進程起著越來越…

TCP 和 UDP

TCP/IP五層網絡結構模型 物理層&#xff1a;物理層建立在物理通信介質的基礎上&#xff0c;作為系統和通信介質的接口&#xff0c;用來實現數據鏈路實體間透明的比特 (bit) 流傳輸。只有該層為真實物理通信&#xff0c;其它各層為虛擬通信 數據鏈路層:在物理層提供比特流服務的…

sapmto生產模式配置及操作詳解_硬巖制砂線怎么設計?300t/h的生產流程與設備配置詳解...

點擊上方“藍字”關注我們說到硬巖&#xff0c;花崗巖、輝綠巖都不陌生&#xff0c;關于花崗巖的生產線配置小編曾介紹過&#xff0c;感興趣的可直接點閱&#xff1a;《硬質巖破碎很發愁&#xff1f;從原料到成品&#xff0c;看花崗巖的破碎制砂生產線配置》《年產300萬t花崗巖…

公交卡軟件測試思路,中國移動NFC專用SIM卡測試過程介紹

近期&#xff0c;通訊運營商在NFC的應用領域邁出了一大步&#xff0c;消費者在北京乘坐地鐵、公交以及其他支持市政一卡通消費的場所均可進行手機支付。接下來就從辦卡開始&#xff0c;為大家詳細介紹一下中國移動NFC手機錢包的實測過程。辦理手機NFC支付業務想要刷手機消費除了…

Java 集合系列目錄(Category)

Java 集合系列目錄(Category) 轉自&#xff1a;Java 集合系列目錄(Category) 01. Java 集合系列01之 總體框架 02. Java 集合系列02之 Collection架構 03. Java 集合系列03之 ArrayList詳細介紹(源碼解析)和使用示例 04. Java 集合系列04之 fail-fast總結(通過ArrayList來說明f…

spring的applicationContext.xml如何自動加載

一個web工程自動加載的配置文件只有web.xml&#xff0c;想要加載其他.xml必須在web.xml里面進行配置。 用spring的時候需要一個bean容器來管理所有的bean&#xff0c;所有bean默認是寫在applicationContext.xml里的&#xff0c;在web.xml里面是這么設置的&#xff0c; 1 <co…

青年教師大講堂 計算機,浙海大青年教師大講堂之船機學院“知識改變命運”...

原標題&#xff1a;浙海大青年教師大講堂之船機學院“知識改變命運”10月28日上午&#xff0c;由校團委主辦&#xff0c;船舶與機電工程學院團委承辦的青年博士教師大講堂系列活動之“知識改變命運”在長峙校區楊存國一號報告廳舉行。本次講座由船舶與機電工程學院青年博士石學…

ndwi是什么意思_NDWI是什么意思

1. Thus, this indicates that NDWI is a useful vegetation index for estimating forest fire potential in the Atlantic region.因此&#xff0c;這表明NDWI是在大西洋地區的潛在有用的森林火災指數。2. NDWI的翻譯2. Therefore, the NDWI is not suitable for enhancing a…

深入淺出分布式文件系統MogileFS集群

一&#xff0c;簡介 MogileFS是一款開源的分布式文件存儲系統&#xff0c;由LiveJournal旗下的Danga Interactive公司開發。Danga團隊開發了包括 Memcached、MogileFS、Perlbal 等多個知名的開源項目。目前MogileFS的日益成熟使用此解決方法的公司越來越多&#xff0c;例如日…

python并行計算numpy_【Nature文章摘錄】NumPy: 從單機到分布式并行計算

原標題&#xff1a;【Nature文章摘錄】NumPy: 從單機到分布式并行計算點擊上圖&#xff0c;查看詳情本公眾號的推送以互聯網大數據技術為主&#xff0c;是《互聯網大數據處理技術與應用》《Python爬蟲大數據采集與挖掘》等課程的配套號。內容涉及 大數據采集、存儲、分析挖掘的…