原因是这里:
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}
前面的是单字节读取,存储每一个字节。
后面的这个也是单字节读取,但是每次读取两次,而每次保存的是第二次读取的值。
InputStream你去仔细看看它的三种读取数据流的方法,就明白了。
while循环中每次读取的值没有保存到date中。
比对了你的代码,不同的地方见下面代码
第一个
int temp=0;
while((temp=rea.read())!=-1){
date[foot++]=(byte) temp;
}
第二个
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}
第一个类里只调用了一次rea.read(),用于判断和赋值,而第二个类里调用了两次rea.read(),一个用于判断,一个用于赋值,如果你文件内容小于byte[1024]的长度,那么第二次read将返回空
原因是这里:
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}
楼上说得是没错,但是原因就属于瞎扯淡了,rea.read()这个方法,第一个中,你是每一个都读到了,而第二个中,你是每次取第二次读的值赋值的,相当于100个数每次读偶数;说白了,rea.read()这个方法你每调用一次,他就读取一次
结果输出的是什么?