为了账号安全,请及时绑定邮箱和手机立即绑定

老师好,我用这个方法复制数据,复制后的文件总要比原文件大几十字节是为什么?

老师好,我用这个方法复制数据,复制后的文件总要比原文件大几十字节是为什么?

吃鸡游戏 2018-12-06 19:40:01
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,你再考虑一下。

查看完整回答
反对 回复 2018-12-16
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

老师我问的是JAVA

查看完整回答
反对 回复 2018-12-16
?
温温酱

TA贡献1752条经验 获得超4个赞

@小张学代码: 不好意思,看错了

查看完整回答
反对 回复 2018-12-16
?
GCT1015

TA贡献1827条经验 获得超4个赞

byte[] dataBytes=new byte[4096];//这个数改成1试试

查看完整回答
反对 回复 2018-12-16
?
慕后森

TA贡献1802条经验 获得超5个赞

在操作系统中内存空间是按块区分的,一个块应该是2K,有的是4K,所以占用空间肯定是块的整数倍,但是实际的使用空间是根据数据大小来计算的,所以你去读的时候是大小byte[4096]。所以是一次读4K,最后一次虽然没4K,但是也拿了4K的东西(虽然后面是空的,),所以实际空间和原来的不一样。

查看完整回答
反对 回复 2018-12-16
  • 6 回答
  • 0 关注
  • 662 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信