課程
/后端開發(fā)
/Java
/文件傳輸基礎(chǔ)——Java IO流
前面說緩沖流是用桶裝水,理應(yīng)最快,但從結(jié)果上看不應(yīng)該是copyFile花的時間最短嗎?而copyFile用的是byte數(shù)組
2017-01-06
源自:文件傳輸基礎(chǔ)——Java IO流 4-5
正在回答
copyFileByBuffer這里是一個字節(jié)一個字節(jié)讀的--->(c=bis.read())!=-1,并非批量,應(yīng)將它與copyFileByByte的速度相比,是快的。
如果copyFileByBuffer使用字節(jié)數(shù)組讀取--->(b=in.read(buf, 0, buf.length))!=-1,
那么會比同樣使用字節(jié)數(shù)組批量讀取的copyFile快。
風(fēng)鈴飛弦 提問者
我個人認(rèn)為復(fù)制文件最快的做法應(yīng)該是批量讀取到字節(jié)數(shù)組中然后使用緩沖輸出流寫入到文件。
并且在循環(huán)寫入的過程中不要flush,要不然就失去了緩沖的意義,畢竟緩沖輸出流在關(guān)閉的時候會將所有緩沖區(qū)中的數(shù)據(jù)全部寫入文件。(注:flush()是防止在close之前有緩沖沒有完全讀完就被強行關(guān)閉了文件,在網(wǎng)絡(luò)連接傳輸數(shù)據(jù)容易出問題。去掉緩沖循環(huán)的flush()速度會快很多)
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內(nèi)容
1 回答用RandomAcessFile無論自己寫的還是讀取的中文文件都無亂碼
1 回答符號問題不會
5 回答事實證明BufferedInputStream比FileInputStream快,而不是老師說的那個結(jié)論批量比緩沖塊??!如果批量緩沖與批量相比呢?代碼如下
3 回答顯示找不到File符號??
3 回答BufferedRead應(yīng)該是叫字符緩沖輸入吧?老師。不應(yīng)該叫字符流的過濾器?我不明白BufferedInputStream怎么叫字節(jié)緩沖輸入?還有FilterInputStream叫什么?我疑惑
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-01-29
copyFileByBuffer這里是一個字節(jié)一個字節(jié)讀的--->(c=bis.read())!=-1,并非批量,應(yīng)將它與copyFileByByte的速度相比,是快的。
如果copyFileByBuffer使用字節(jié)數(shù)組讀取--->(b=in.read(buf, 0, buf.length))!=-1,
那么會比同樣使用字節(jié)數(shù)組批量讀取的copyFile快。
2017-01-07
我個人認(rèn)為復(fù)制文件最快的做法應(yīng)該是批量讀取到字節(jié)數(shù)組中然后使用緩沖輸出流寫入到文件。
并且在循環(huán)寫入的過程中不要flush,要不然就失去了緩沖的意義,畢竟緩沖輸出流在關(guān)閉的時候會將所有緩沖區(qū)中的數(shù)據(jù)全部寫入文件。(注:flush()是防止在close之前有緩沖沒有完全讀完就被強行關(guān)閉了文件,在網(wǎng)絡(luò)連接傳輸數(shù)據(jù)容易出問題。去掉緩沖循環(huán)的flush()速度會快很多)