int temp = 0;
try {
fis = new FileInputStream(src);
fos = new FileOutputStream(dest);
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
while ((temp = bis.read()) != -1){
System.out.println(temp);
bos.write(temp);
}
代碼片段如上所示。 這是一個復制檔案的操作,中間我在每次讀取的時候列印了一下此次讀取的位元組數,理應應該是8192也就是默認的快取陣列。但輸出確實這樣的:

但是我自己定義的快取陣列,沒有用緩沖流的話,確是正常的:

這是為什么呢?
之后我又將緩沖流中的那個輸出temp陳述句洗掉,發現執行速度變快了!但還遠不及我用1024快取的快!這又是為什么呢?(檔案為20mb左右)
uj5u.com熱心網友回復:
bis.read()每次讀取一個字符。所以列印的是每個字符的ascii碼,效率低下uj5u.com熱心網友回復:
上面說錯了,bis.read()每次讀取一個位元組。uj5u.com熱心網友回復:
bis不是已經為緩沖流嗎?在創建的時候還需要設定每次的緩沖大小嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/101831.html
標籤:Java SE
上一篇:JAVA求解答
