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