黑马程序员_自定义数组拷贝,为什么要传入数组的长度

来源:互联网 发布:淘宝p图神器软件 编辑:程序博客网 时间:2024/04/30 09:14
---------------------- android培训、java培训、期待与您交流! ----------------------
FileInputStream fis = new FileInputStream("Adele - Rolling in the Deep.mp3");
        FileOutputStream fos= new FileOutputStream("dest.mp3");byte[] buffer = new byte[1024];int len;while ((len = fis.read(buffer)) != -1)fos.write(buffer, 0, len);fis.close();fos.close();

使用自定义数组拷贝时,为什么要传入数组的长度呢?

传入len,是从数组的第一个拷贝到最后一个,那直接传入buffer不就行了吗?

答:使用write(buffer, 0, len)是解决数据多余的问题:在你每read(byte[] buffer)一次后,它就将一定长度的数据写入到了buffer中,它的长度取决于以下情况 :Read(char[] chr)方法从指定的文件读chr.length到chr字符数组中,如果chr.length大于文件中的字符长度,则数据全部放在chr数组中;如果chr.length < 文件中字符长度,读一次,就写人chr.length的数据,下次度接着上次读到的末尾继续读,并将第上一次写入的数据覆盖掉,如果再读到某次时,要读入的文件的数据长度〈 str.length,就依次覆盖,没有覆盖到的仍是上一次覆盖后的数据。len = fis.read(buffer)返回的是每次读入的实际长度,如果不指定len,它会将上一次没被覆盖掉的数据写入,造成数据多余。

---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
	
				
		
原创粉丝点击