public static void copyDate(File srcFile,File destFile){
try{
FileInputStream reader=new FileInputStream(srcFile);
FileOutputStream writer=new FileOutputStream(destFile);
?
int length=0;
?
byte[] dataBytes=new byte[4096];//這個數改成128也一樣,速度慢了很多
while((length=reader.read(dataBytes))!=-1){
?
writer.write(dataBytes);
}
?
reader.close();
writer.close();
?
6 回答

Smart貓小萌
TA貢獻1911條經驗 獲得超7個贊
因為你寫入的字節比實際要多。
問題在這:
byte[] dataBytes=new byte[4096];//這個數改成128也一樣,速度慢了很多
在最后一次的讀取字節時,原有的字節數組要小于4096,你再考慮一下。

慕后森
TA貢獻1802條經驗 獲得超5個贊
在操作系統中內存空間是按塊區分的,一個塊應該是2K,有的是4K,所以占用空間肯定是塊的整數倍,但是實際的使用空間是根據數據大小來計算的,所以你去讀的時候是大小byte[4096]。所以是一次讀4K,最后一次雖然沒4K,但是也拿了4K的東西(雖然后面是空的,),所以實際空間和原來的不一樣。
添加回答
舉報
0/150
提交
取消