日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java nio详解,Java NIO API详解

發(fā)布時(shí)間:2023/12/15 java 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java nio详解,Java NIO API详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java NIO API詳解

在JDK

1.4以前,Java的IO操作集中在java.io這個(gè)包中,是基于流的阻塞(blocking)API。對(duì)于大多數(shù)應(yīng)用來(lái)說(shuō),這樣的API使用很方

便,然而,一些對(duì)性能要求較高的應(yīng)用,尤其是服務(wù)端應(yīng)用,往往需要一個(gè)更為有效的方式來(lái)處理IO。從JDK 1.4起,NIO

API作為一個(gè)基于緩沖區(qū),并能提供非阻塞(non-blocking)IO操作的API被引入。本文對(duì)其進(jìn)行深入的介紹。

NIO API主要集中在java.nio和它的subpackages中:

java.nio

定義了Buffer及其數(shù)據(jù)類型相關(guān)的子類。其中被java.nio.channels中的類用來(lái)進(jìn)行IO操作的ByteBuffer的作用非常重要。

java.nio.channels

定義了一系列處理IO的Channel接口以及這些接口在文件系統(tǒng)和網(wǎng)絡(luò)通訊上的實(shí)現(xiàn)。通過(guò)Selector這個(gè)類,還提供了進(jìn)行非阻塞IO操作的辦法。這個(gè)包可以說(shuō)是NIO API的核心。

java.nio.channels.spi

定義了可用來(lái)實(shí)現(xiàn)channel和selector API的抽象類。

java.nio.charset

定義了處理字符編碼和解碼的類。

java.nio.charset.spi

定義了可用來(lái)實(shí)現(xiàn)charset API的抽象類。

java.nio.channels.spi和java.nio.charset.spi這兩個(gè)包主要被用來(lái)對(duì)現(xiàn)有NIO API進(jìn)行擴(kuò)展,在實(shí)際的使用中,我們一般只和另外的3個(gè)包打交道。下面將對(duì)這3個(gè)包一一介紹。

Package java.nio

這個(gè)包主要定義了Buffer及其子類。Buffer定義了一個(gè)線性存放primitive type數(shù)據(jù)的容器接口。對(duì)于除boolean以外的其他primitive type,都有一個(gè)相應(yīng)的Buffer子類,ByteBuffer是其中最重要的一個(gè)子類。

下面這張UML類圖描述了java.nio中的類的關(guān)系:

Buffer

定義了一個(gè)可以線性存放primitive type數(shù)據(jù)的容器接口。Buffer主要包含了與類型(byte, char…)無(wú)關(guān)的功能。值得注意的是Buffer及其子類都不是線程安全的。

每個(gè)Buffer都有以下的屬性:

capacity

這個(gè)Buffer最多能放多少數(shù)據(jù)。capacity一般在buffer被創(chuàng)建的時(shí)候指定。

limit

在Buffer上進(jìn)行的讀寫(xiě)操作都不能越過(guò)這個(gè)下標(biāo)。當(dāng)寫(xiě)數(shù)據(jù)到buffer中時(shí),limit一般和capacity相等,當(dāng)讀數(shù)據(jù)時(shí),limit代表buffer中有效數(shù)據(jù)的長(zhǎng)度。

position

讀/寫(xiě)操作的當(dāng)前下標(biāo)。當(dāng)使用buffer的相對(duì)位置進(jìn)行讀/寫(xiě)操作時(shí),讀/寫(xiě)會(huì)從這個(gè)下標(biāo)進(jìn)行,并在操作完成后,buffer會(huì)更新下標(biāo)的值。

mark

一個(gè)臨時(shí)存放的位置下標(biāo)。調(diào)用mark()會(huì)將mark設(shè)為當(dāng)前的pos

總結(jié)

以上是生活随笔為你收集整理的java nio详解,Java NIO API详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。