下面几句实在不明白,为什么之前copy一大一小,后来就一样大,求助????

下面几句实在不明白,为什么之前copy一大一小,后来就一样大,求助????

int v=0;

byte[] yt=new byte[1024];

while((v=fis.read(yt))!=-1){

fos.write(yt, 0, v);

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
KLovei 2020-05-02 21:27:45

每次循环读取1024个字节,然后清空循环,再读取1024,直至全部读取完,读取到最后剩下的字节可能不够1024个,可能剩下几百个,但他还会写入到copy里面,所以就造成了复制之后的变大了。

  • 嗨,对于, byte[] b=new byte[1024]; fis.read(b);// 一次读取1024个字节,这1024个字节放在哪呢?就是把b数组全部占满了? fis.read(b);//这次读取的时候会自动清除上一次存入到b数组的全部数组? 然后把新读的1024个字节存入b数组?
    2020-05-22 11:04:10
  • KLovei 回复 小术菜菜 #2
    是的可以这么理解
    2020-05-22 11:11:26
好帮手慕阿园 2020-05-01 17:08:10

同学你好

byte[] yt=new byte[1024];这句是表示创建了一个长度为1024的字节数组
while((v=fis.read(yt))!=-1)这句表示在读取fis这个文件,如果读取到默认fis.read(yt)返回的值是-1

fos.write(yt, 0, n);这句表示把读出来的东西写入到了fos文件里

刚开始用fos.write(yt)这个方法的时候不一样是因为,读取的时候按照1024个字节去写入的,如果原文件最后一行没有1024个字节,那么copy的文件会比原文件大一点
用fos.write(yt, 0, v);这样读的话表示如果最后一行没有1024个字节,是从零到读取到实际字节,写入的也是实际字节,所以会一样大

祝学习愉快

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师