關(guān)于幾種Output方法效率問題
FileOutputStream、DataOutputStream、BufferedOutputStream
老師你說(shuō)的是BufferedOutputStream效率最高,可是結(jié)果卻是FileOutputStream的代碼只花了7毫秒,是怎么回事兒呢?
FileOutputStream、DataOutputStream、BufferedOutputStream
老師你說(shuō)的是BufferedOutputStream效率最高,可是結(jié)果卻是FileOutputStream的代碼只花了7毫秒,是怎么回事兒呢?
2017-08-26
舉報(bào)
2017-08-27
引用woider所講的:
使用緩沖字節(jié)流復(fù)制確實(shí)是最快的方式,但對(duì)于小文件10M以下的文件體現(xiàn)不出優(yōu)勢(shì),對(duì)于百兆文件正確使用,時(shí)間可以控制到50ms內(nèi)。視頻中的緩沖字節(jié)流使用有錯(cuò)誤,復(fù)制文件最快的做法是將批量讀取到的字節(jié)數(shù)組使用緩沖寫入到文件,在機(jī)器性能范圍內(nèi)字節(jié)數(shù)組越大越快。在循環(huán)寫入的過(guò)程中不需要使用flush,就像cwt8805說(shuō)的,緩沖輸入流在關(guān)閉的時(shí)候會(huì)將所有緩沖區(qū)的數(shù)據(jù)全部寫入文件,使用flush刷新緩沖就失去了緩沖的意義。最后關(guān)閉IO流和文件流應(yīng)該在finally中關(guān)閉,否則IO異常時(shí)執(zhí)行不到close語(yǔ)句,IO流仍然沒有關(guān)閉。