第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

帶緩沖讀寫(xiě)操作,“桶”的概念在哪體現(xiàn)?

//帶緩沖字節(jié)流讀取

?BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcFile));
??BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destFile));
??int c;
??while((c=bis.read())!=-1){
???bos.write(c);
???bos.flush();

//不帶緩沖的字節(jié)流讀取

FileInputStream in=new FileInputStream(srcFile);
??FileOutputStream out=new FileOutputStream(destFile);
??int c;
??while((c=in.read())!=-1){
???out.write(c);
???out.flush();
??}

//具體讀寫(xiě)操作時(shí),read()方法返回的都是讀取到的字節(jié),write寫(xiě)入的也是讀到的字節(jié)內(nèi)容,為什么前者(帶緩沖)比(不帶緩沖)快?前者“桶”的概念在哪體現(xiàn)?盼快速回復(fù),謝謝!

正在回答

9 回答

這個(gè)問(wèn)題首先要明白,讀取和寫(xiě)入的過(guò)程;

知道運(yùn)行內(nèi)存吧???計(jì)算機(jī)為什么要運(yùn)行內(nèi)存呢???其實(shí)運(yùn)行內(nèi)存就是一個(gè)緩沖區(qū)!!

文件的讀取和寫(xiě)入操作的過(guò)程是這樣的:

(1)首先說(shuō)一下批量讀取和單個(gè)字節(jié)的讀取

  1. 批量讀取是new一個(gè)對(duì)象,new一個(gè)對(duì)象就是在內(nèi)存中申請(qǐng)一個(gè)和new的要求的大小相一致的運(yùn)行內(nèi)存;

  2. 單個(gè)讀取系統(tǒng)默認(rèn)申請(qǐng)了一個(gè)字節(jié)的運(yùn)行內(nèi)存;

(2)文件的讀取和寫(xiě)入

?1.先說(shuō)單個(gè)字節(jié)的讀取,從原文件中讀取一個(gè)字節(jié)放入到內(nèi)存中,再?gòu)膬?nèi)存中把一個(gè)字節(jié)大小的數(shù)據(jù)放入到目標(biāo)文件中;(強(qiáng)調(diào)一次操作必須是直接從源文件到內(nèi)存再到目標(biāo)文件, 才能再次讀取下個(gè)字節(jié))

2.再說(shuō)批量讀取,同理

從原文件中讀取多個(gè)字節(jié)放入到內(nèi)存中,再?gòu)膬?nèi)存中把多個(gè)字節(jié)大小的數(shù)據(jù)放入到目標(biāo)文件中;(強(qiáng)調(diào)一次操作必須是直接從源文件到內(nèi)存再到目標(biāo)文件, 才能再次讀取下多字節(jié))

(3)從2中我們就能理解Buffer的運(yùn)行機(jī)制了,開(kāi)始解釋?zhuān)ㄔ購(gòu)?qiáng)調(diào)一下運(yùn)存既是緩存區(qū))

  1. buffer的單個(gè)讀取,同理讀取既是先讀取一個(gè)字節(jié)放入內(nèi)存中,在讀取一個(gè)字節(jié)中,直到讀取完整個(gè)文件,批量從緩存中放到目標(biāo)文件中,可以看粗這樣節(jié)省了一次一次的從內(nèi)存中到目標(biāo)文件的過(guò)程即(1——》2——》3變成了1——》3,這樣從需要花費(fèi)2步,變成只花費(fèi)了一步,所以buffer的性能應(yīng)該是正常的一倍)

  2. buffer的批量讀取,同理讀取既是先讀取多個(gè)字節(jié)放入內(nèi)存中,在讀取多個(gè)字節(jié)中,直到讀取完整個(gè)文件,批量從緩存中放到目標(biāo)文件中,可以看粗這樣節(jié)省了一次一次的從內(nèi)存中到目標(biāo)文件的過(guò)程即(1——》2——》3變成了1——》3,這樣從需要花費(fèi)2步,變成只花費(fèi)了一步,所以buffer的性能應(yīng)該是正常的一倍)

    (4)總結(jié),累死我了,以上內(nèi)容純屬自己瞎想,沒(méi)有驗(yàn)證,求大神驗(yàn)證,告訴我答案,

    ? ? 我是渣渣,我是新手,驗(yàn)證發(fā)現(xiàn)我說(shuō)的錯(cuò)了,請(qǐng)不要罵我,xiexie

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

怒放的生命012

一定要告訴我最后的結(jié)果呀
2016-07-01 回復(fù) 有任何疑惑可以回復(fù)我~

比如說(shuō),

現(xiàn)在有一個(gè)水管,水流很慢,一滴一滴的流,然后你只能一滴一滴的喝。

不過(guò)呢你有了一個(gè)杯子(BuffederInputStream)你可以讓杯子一滴一滴的接著。

什么時(shí)候不需要水了,拿起來(lái)直接喝掉。這就是緩沖區(qū)

1 回復(fù) 有任何疑惑可以回復(fù)我~

你這個(gè)比喻不夠形象哦

0 回復(fù) 有任何疑惑可以回復(fù)我~

你這個(gè)沒(méi)有定義緩存size

要是想理解概念就好辦


100000個(gè)芝麻,從A碗到B碗問(wèn)題

沒(méi)buff邏輯:一個(gè)一個(gè)拿過(guò)去

buff邏輯:一把一把(10000個(gè))抓過(guò)去

(抓過(guò)去的路上浪費(fèi)了很多時(shí)間)


產(chǎn)生區(qū)別的原因其實(shí)很復(fù)雜。沒(méi)buff浪費(fèi)時(shí)間主要是IO操作次數(shù)太多(IO操作往往是效率瓶頸)

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

許曉濤

buff是緩沖區(qū),就是說(shuō)先把一粒一粒的芝麻捏到手里,再?gòu)氖掷镏苯拥酵肜?,緩沖區(qū)啊
2015-11-30 回復(fù) 有任何疑惑可以回復(fù)我~

559bddad00012a9005000465.jpg

559bddad000156fe05000461.jpg

懂了嗎????

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

隨便學(xué)學(xué) 提問(wèn)者

你這是根據(jù)代碼結(jié)果去解釋函數(shù)功能。 //帶緩沖字節(jié)流讀取 while((c=bis.read())!=-1){ //c=bis.read(),c是讀到的字節(jié) bos.write(c); //bos.write(c),實(shí)際操作是先讀一批字節(jié),緩沖區(qū)滿(mǎn)后,再進(jìn)行寫(xiě)操作 bos.flush(); //緩沖區(qū)功能再代碼中沒(méi)有體現(xiàn) 帶緩沖區(qū)代碼理解對(duì)嗎?
2015-07-08 回復(fù) 有任何疑惑可以回復(fù)我~
#2

qq_木的three次方_0

我采用帶緩沖區(qū)的批量字節(jié)數(shù)組賦值文件,竟然比不帶緩沖區(qū)的批量字節(jié)數(shù)組效率低,這是為什么?
2015-10-08 回復(fù) 有任何疑惑可以回復(fù)我~
#3

qq_木的three次方_0

long start = System.currentTimeMillis(); FileDemo.CopyByBufferBuf(new File("E:\\java\\test.mp3"), new File("E:\\java\\dest4.mp3")); long end = System.currentTimeMillis(); System.out.print("緩沖區(qū)批量字節(jié)數(shù)組復(fù)制的時(shí)間"); System.out.println(end-start);
2015-10-08 回復(fù) 有任何疑惑可以回復(fù)我~
#4

qq_木的three次方_0

long start = System.currentTimeMillis(); FileDemo.copyfileByBuf(new File("E:\\java\\test.mp3"), new File("E:\\java\\dest1.mp3")); long end = System.currentTimeMillis(); System.out.print("字節(jié)數(shù)組批量復(fù)制的時(shí)間:"); System.out.println(end-start); }
2015-10-08 回復(fù) 有任何疑惑可以回復(fù)我~
#5

qq_木的three次方_0

緩沖區(qū)批量字節(jié)數(shù)組復(fù)制的時(shí)間31 字節(jié)數(shù)組批量復(fù)制的時(shí)間:16
2015-10-08 回復(fù) 有任何疑惑可以回復(fù)我~
查看2條回復(fù)

有圖有真相

0 回復(fù) 有任何疑惑可以回復(fù)我~

需要我的代碼嗎


0 回復(fù) 有任何疑惑可以回復(fù)我~

剛剛我自己實(shí)驗(yàn)了一番,用緩沖區(qū)復(fù)制相同文件用來(lái)195毫秒,不使用緩沖區(qū)用了400毫秒左右,因?yàn)椴环€(wěn)定,但是都在那個(gè)范圍之間。

0 回復(fù) 有任何疑惑可以回復(fù)我~

你可以這樣試試,寫(xiě)一個(gè)復(fù)制文件的代碼一個(gè)用緩沖區(qū)一個(gè)不使用緩沖區(qū),并在開(kāi)始復(fù)制是記錄時(shí)間,結(jié)束后記錄時(shí)間,看看那個(gè)快。如果不會(huì)使用java中獲取當(dāng)前時(shí)間的方法的話(huà),自己去找吧

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

帶緩沖讀寫(xiě)操作,“桶”的概念在哪體現(xiàn)?

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)