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 回答
![?](http://img1.sycdn.imooc.com/54584ee0000179f302200220-100-100.jpg)
Smart猫小萌
TA贡献1911条经验 获得超7个赞
因为你写入的字节比实际要多。
问题在这:
byte[] dataBytes=new byte[4096];//这个数改成128也一样,速度慢了很多
在最后一次的读取字节时,原有的字节数组要小于4096,你再考虑一下。
![?](http://img1.sycdn.imooc.com/545868550001f60202200220-100-100.jpg)
慕后森
TA贡献1802条经验 获得超5个赞
在操作系统中内存空间是按块区分的,一个块应该是2K,有的是4K,所以占用空间肯定是块的整数倍,但是实际的使用空间是根据数据大小来计算的,所以你去读的时候是大小byte[4096]。所以是一次读4K,最后一次虽然没4K,但是也拿了4K的东西(虽然后面是空的,),所以实际空间和原来的不一样。
添加回答
举报
0/150
提交
取消