System.out.println(new String(buf,0,len));
单看这句代码的意思就是:
1.从buf[0]开始的len个元素所组成的的数组。
2.1所组成的数组所表示的编码(平台默认编码)所对应的字符串。并将这个字符串构造出来。
3.将这个字符串打印出来。
结合这个代码就是:
byte[] buf=new byte[1024];//构造一个1024个元素(字节)的byte数组,用以存放每次读出的数据
int len=0;//定义一个变量用以保存每次读出的数据的字节数
while((len=fis.read(buf))!=-1)//重复读取数据,直到读完,并把每次读到的数据存放在buf中(装满),读取的 //字节数保存在len中
{
System.out.println(new String(buf,0,len));//前几次读到的数据因为读满了整个数组所以都是(buf,0,1024)(也就是buf本身了),但是最后一次读取不一定能读满1024个字节,这是len所记录的字节数就起到它的作用了,buf,0,len就能准确的把有效字节找出来,而不会把上一轮循环读到的后1024-len位数据读到。所以这里用String类的这个构造方法而不用new String(buf)就是这个用意。
}
|