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

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();

 

吃鸡游戏
浏览 663回答 6
6回答

Smart猫小萌

因为你写入的字节比实际要多。 问题在这: byte[] dataBytes=new byte[4096];//这个数改成128也一样,速度慢了很多 在最后一次的读取字节时,原有的字节数组要小于4096,你再考虑一下。

幕布斯6054654

老师我问的是JAVA

温温酱

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

GCT1015

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

慕后森

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

相关分类

Java