接著上篇文章,我們繼續(xù)來(lái)學(xué)習(xí) Java 中的字節(jié)流操作。
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、集團(tuán)成都企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶(hù);涵蓋的客戶(hù)類(lèi)型包括:成都OPP膠袋等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶(hù)的一致贊揚(yáng)!裝飾者緩沖流 BufferedInput/OutputStream
裝飾者流其實(shí)是基于一種設(shè)計(jì)模式「裝飾者模式」而實(shí)現(xiàn)的一種文件 IO 流,而我們的緩沖流只是其中的一種,我們一起來(lái)看看。
在這之前,我們使用的文件讀寫(xiě)流 FileInputStream 和 FileOutputStream 都是一個(gè)字節(jié)一個(gè)字節(jié)的從磁盤(pán)讀取或?qū)懭?,非常耗時(shí)。
而我們的緩沖流可以預(yù)先從磁盤(pán)一次性讀出指定容量的字節(jié)數(shù)到內(nèi)存中,之后的讀取操作將直接從內(nèi)存中讀取,提高效率。下面我們一起看看緩沖流的具體實(shí)現(xiàn)情況:
依然先以 BufferedInputStream 為例,我們簡(jiǎn)單提一下它的幾個(gè)核心屬性:
buf 就是用于緩沖讀的字節(jié)數(shù)組,它的值將隨著流的讀取而不停的被填充,繼而后續(xù)的讀操作可以直接基于這個(gè)緩沖數(shù)組。
DEFAULT_BUFFER_SIZE 規(guī)定了默認(rèn)緩沖區(qū)的大小,即 buf 的數(shù)組長(zhǎng)度。MAX_BUFFER_SIZE 指明了緩沖區(qū)的上限。
count 指向緩沖數(shù)組中最后一個(gè)有效字節(jié)索引后一位。pos 指向下一個(gè)待讀取的字節(jié)索引位置。
markpos 和 marklimit 用于重復(fù)讀操作。
接著我們看看 BufferedInputStream 的幾個(gè)示例構(gòu)造器:
public BufferedInputStream(InputStream in) { this(in, DEFAULT_BUFFER_SIZE); }