亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

新I/O

2019-11-14 08:58:16
字體:
來源:轉載
供稿:網友

java SE 1.4引入了大量用于改進輸入/輸出處理機制的特性,它們位于java.nio包中,合稱“新I/O”。 

這個包中包含對下列特性的支持:字符集編碼器和解碼器,非阻塞的I/O ,內存映射文件,文件加鎖機制 。字符集編碼器和解碼器在前面已經說過了。

內存映射文件 大多數操作系統都可以利用虛擬內存實現來將一個文件或者文件的一部分“映射”到內存中。然后,這個文件就可以當作是內存數組一樣地訪問,這比傳統的文件操作要快得多 。內存映射比使用帶緩沖的順序輸入要稍微快一點,但是比使用RandomaccessFile快很多。當然,精確的值因機器不同會產生很大的差異,但是很明顯,如果需要使用隨機訪問,那么性能受損是不可避免的。另一方面,對于中等尺寸文件的順序讀入沒有必要使用內存映射。首先,從文件中獲得一個通道( channel),通道是用于磁盤文件的一種抽象,它使我們可以訪問諸如內存映射、文件加鎖機制以及文件間快速數據傳遞等操作系統特性。我們可以通過調用getChannel方法來獲得通道,這個方法已經添加到了FileInputStream、FileOutputStream和RandomAccessFile類中。

FileInputStream f = new FileInputStream(xxx);FileChannel chnanel = f.getChannel();然后,通過調用FileChannel類的map方法從這個通道中獲得一個MappedByteBuffer。你可以指定想要映射的文件區域與映射模

式,有三種模式可以得到支持:

FileChannel.MapMode.READ_ONLY:所產生的緩沖區是只讀的,任何對該緩沖區寫入的嘗試都會導致ReadOnlyBufferException異常。FileChannel.MapMode.READ_WRITE:所產生的緩沖區是可寫的,任何修改都會在某個時刻寫回到文件中。注意,其他映射同一個文件的程序可能不能立即看到這些修改,多個程序同時進行文件映射的確切行為是依賴于操作系統的。

FileChannel.MapMode.PRIVATE:所產生的緩沖區是可寫的,但是任何修改對這個緩沖區來說都是私有的,不會傳播到文件中。一旦有了緩沖區,就可以使用ByteBuffer類和Buffer超類的方法讀寫數據了。

文件加鎖機制

文件鎖可以控制對文件或文件中某個范圍的字節的訪問,但是,文件加鎖機制在不同的操作系統之間變化很大。

FileChannelFileLock lock()在整個文件上獲得一個獨占的鎖,這個方法將阻塞直至獲得鎖。FileLock tryLock()在整個文件上獲得一個獨占的鎖,或者在無法獲得鎖的情況下返回null。FileLock lock(long position, long size, boolean shared)FileLock tryLock(long position, long size, boolean shared)在文件的一個區域上獲得鎖。第一個方法將阻塞直至獲得鎖,而第二個方法將在無法獲得鎖時返回null。參數: position 要鎖定區域的起始位置size 要鎖定區域的尺寸shared true為共享鎖, false為獨占鎖
FileLockvoid release()釋放這個鎖。

MappedByteBuffer map(FileChannel.MapMode mode, long position, long size)將文件的一個區域映射到內存中。參數: mode FileChannel.MapMode類中的常量READ_ONLY、 READ_WRITE、或PRIVATE之一position 映射區域的起始位置size 映射區域的大小
bufferboolean hasRemaining()如果當前的緩沖區位置沒有達到這個緩沖區的界限位置則返回true。int limit()返回這個緩沖區的界限位置,即沒有任何值可用的第一個位置。
ByteBufferbyte get()從當前位置獲得一個字節,并將當前位置推到下一個字節。byte get(int index)從指定索引處獲得一個字節。ByteBuffer put(byte b)向當前位置推入一個字節,并將當前位置推到下一個字節。返回對這個緩沖區的引用。ByteBuffer put(int index, byte b)向指定索引處推入一個字節。返回對這個緩沖區的引用。ByteBuffer get(byte[] destination)ByteBuffer get(byte[] destination, int offset, int length)用緩沖區中的字節來填充字節數組,或者字節數組的某個區域,并將當前位置向前推讀入的字節數個位置。如果緩沖區不夠,那么就不會讀入任何字節,并拋出BufferUnderflowException。返回對這個緩沖區的引用。參數: destination 要填充的字節數組offset 要填充區域的偏移量length 要填充區域的長度ByteBuffer put(byte[] source)ByteBuffer put(byte[] source, int offset, int length)將字節數組中的所有字節或者給定區域的字節都推入緩沖區中,并將當前位置向前推寫出的字節數個位置。如果緩沖區不夠,那么就不會讀入任何字節,并拋出BufferUnderflow Exception。返回對這個緩沖區的引用。參數: source 要寫出的數組offset 要寫出區域的偏移量length 要寫出區域的長度Xxx getXxx()Xxx getXxx(int index)ByteBuffer putXxx(xxx value)ByteBuffer putXxx(int index, xxx value)獲得或放置一個二進制數。 Xxx Int、 Long、 Short、 Char、 Float或Double中的一個。ByteBuffer order(ByteOrder order)ByteOrder order()設置或獲得字節順序, order的值是ByteOrder類的常量BIG_ENDIAN或LITTLE_ENDIAN中的一個
Buffer clear()通過將位置復位到0,并將界限復位到容量,使這個緩沖區為寫出做好準備。返回this。Buffer flip()通過將界限設置到位置,并將位置復位到0,使這個緩沖區為讀入做好準備。返回this。Buffer rewind()通過將讀寫位置復位到0,并保持極限不變,使這個緩沖區為重新讀入相同的值做好準備。返回this。Buffer mark()將這個緩沖區的標記設置到讀寫位置,返回this。Buffer reset()將這個緩沖區的位置設置到標記,從而允許被標記的部分可以再次被讀入或寫出,返回this。int remaining()返回剩余可讀入或可寫出的值的數量,即界限與位置之間的差異。int position()返回這個緩沖區的位置。int capacity()返回這個緩沖區的容量。

charbuffer
char get()CharBuffer get(char[] destination)CharBuffer get(char[] destination, int offset, int length)從這個緩沖區的位置處開始,獲得一個char值,或者某個范圍的char值,然后將位置向前推過所讀入的字符。最后兩個方法返回this。CharBuffer put(char c)CharBuffer put(char[] source)CharBuffer put(char[] source, int offset, int length)
CharBuffer put(String source)CharBuffer put(CharBuffer source)從這個緩沖區的位置處開始,推入一個char值,或者某個范圍的char值,然后將位置向前推過所寫出的字符。CharBuffer read(CharBuffer destination)從這個緩沖區中獲得char值,然后將它們推入目標緩沖區,直至達到目標緩沖區的界限。返回this。

上一篇:Spring

下一篇:使用cmake自動構建工程

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产麻豆| 日韩欧美精品在线观看| 欧美视频专区一二在线观看| 亚洲一区二区三区乱码aⅴ| 亚洲裸体xxxx| 欧美午夜精品久久久久久浪潮| 日韩av第一页| 亚洲一区美女视频在线观看免费| 亚洲欧洲在线视频| 亚洲小视频在线观看| 久久精品电影网| 久久精品国产成人| 国产999精品久久久| 国产一区私人高清影院| 91香蕉国产在线观看| 日韩成人在线网站| 亚洲日本成人女熟在线观看| 欧亚精品在线观看| 97超级碰在线看视频免费在线看| 日韩女优在线播放| 国产不卡一区二区在线播放| 欧美性猛交xxx| 97视频免费在线观看| 精品视频一区在线视频| 精品中文视频在线| 欧美—级高清免费播放| 久久av在线播放| 色播久久人人爽人人爽人人片视av| 亚洲女人被黑人巨大进入al| 久久精品国产清自在天天线| 国产精品一区久久| 在线精品播放av| 456国产精品| 久久久久久久影院| 国产美女精彩久久| 日本成人在线视频网址| 日韩欧美a级成人黄色| 欧美日韩国产色| 国产一区二区三区三区在线观看| 国产精品成人av在线| 日韩欧美极品在线观看| 欧美性一区二区三区| 国产91色在线|免| 国产成人aa精品一区在线播放| 国产精品成久久久久三级| 久久久免费在线观看| 亚洲男人7777| 日韩精品福利网站| 成人激情在线观看| 欧美亚洲国产另类| 一区二区欧美日韩视频| 欧美巨猛xxxx猛交黑人97人| 爽爽爽爽爽爽爽成人免费观看| 日韩av不卡电影| 日韩av理论片| 国产精品第8页| 成人国产精品一区二区| 日韩亚洲精品视频| 国产精彩精品视频| 欧美性在线观看| 欧美日韩在线视频首页| 国产精品国产亚洲伊人久久| 亚洲free嫩bbb| 亚洲成人精品视频| 日韩成人在线视频网站| 伊人久久免费视频| 欧美日韩成人黄色| 久久久精品影院| 国产视频精品xxxx| 在线观看日韩欧美| 国产日韩欧美日韩大片| 欧美不卡视频一区发布| 国产成人精品999| 在线播放国产一区二区三区| 国产精品久久久久高潮| 欧美日韩国产一区二区三区| 色综合视频网站| 精品久久久久久| 国产精品aaa| 另类图片亚洲另类| 国产成人精品a视频一区www| 午夜精品久久17c| 欧美丝袜第一区| 欧美激情女人20p| 2019日本中文字幕| 国外成人在线视频| 国产精品美女www爽爽爽视频| 国产日韩精品入口| 欧美又大又硬又粗bbbbb| 久久久av一区| 日韩精品视频在线观看免费| 亚洲欧美中文日韩v在线观看| 欧美国产视频一区二区| 久久久噜久噜久久综合| 国产91网红主播在线观看| 国产日韩欧美一二三区| 欧美一区二粉嫩精品国产一线天| 久久99国产综合精品女同| 91香蕉嫩草神马影院在线观看| 欧美亚洲成人网| 国产精品久久久久久av下载红粉| 日韩中文理论片| 国产午夜精品一区二区三区| 欧美猛男性生活免费| 国产女人精品视频| 日韩精品在线免费播放| 上原亚衣av一区二区三区| 亚洲国产精久久久久久久| 欧美日韩一区二区在线播放| 国产成人在线亚洲欧美| 日本韩国欧美精品大片卡二| 色妞在线综合亚洲欧美| 国产裸体写真av一区二区| 91av在线播放| 国产日韩亚洲欧美| 在线播放国产精品| www亚洲欧美| 国产精品一区二区久久久| 亚洲国产精品久久久久| 日韩小视频网址| 91天堂在线观看| 亚洲综合在线做性| 久久久这里只有精品视频| 精品国产1区2区| 亚洲专区在线视频| 久久久精品免费| 久久久中精品2020中文| 国内免费精品永久在线视频| 欧美亚洲另类视频| 97精品欧美一区二区三区| 国产亚洲精品激情久久| 欧美午夜久久久| 日韩国产欧美精品在线| 色偷偷av亚洲男人的天堂| 一区二区三欧美| 亚洲成人激情小说| 国产精品男女猛烈高潮激情| 亚洲乱码一区二区| 韩曰欧美视频免费观看| 国产精品久久久久久久av大片| 8090成年在线看片午夜| xx视频.9999.com| 亚洲第一视频网站| 久久久久久噜噜噜久久久精品| 亚洲一区av在线播放| 在线国产精品视频| 韩国美女主播一区| 亚洲自拍偷拍色片视频| 国产一区二区激情| 国产噜噜噜噜久久久久久久久| 中文字幕av一区二区| 亚洲精品欧美日韩专区| 国产主播精品在线| 亚洲最新视频在线| 一本色道久久综合亚洲精品小说| 国产97在线|日韩| 日韩精品视频在线| 日日骚av一区| 热re91久久精品国99热蜜臀| 久久最新资源网| 91tv亚洲精品香蕉国产一区7ujn| 成人性生交xxxxx网站| 精品久久久免费| 欧美韩国理论所午夜片917电影|