如果说in.read(by.0.by.;ength)读满之后返回的是-1;那么在上一个例子中的int bytes的值最后不就是-1了吗
public void putByByteArrays(File file) throws IOException{
long start=System.currentTimeMillis();
FileInputStream in=new FileInputStream(file);
byte[] by=new byte[8*1024];
int bytes=in.read(by,0,by.length);
这里的bytes为什么不是-1?难道还没有读取完吗?
for (int i=0;i<bytes;) {
if((by[i]&0xff)<=0xf){
System.out.print("0");
}
System.out.print(Integer.toHexString(by[i]&0xff)+" ");
if(++i%10==0){
System.out.println();
}
}
in.close();
long end=System.currentTimeMillis();
System.out.println("时间:"+(end-start));
}
读完了就返回 -1。
out.write(buf,0,b);
将长度为b(其中b = in.read(buf, 0, buf.length))的字节从字节数组buf的第0个位置开始写入到流
int bytes=in.read(by,0,by.length) 返回的是长度。
while((b=in.read(by,0,by.length))!=-1)循环读取, 第一次直接读完了,返回了长度, 打印。 再循环读,返回-1
int b;
while((b=in.read(by,0,by.length))!=-1){
out.write(by,0,b);
System.out.println(b);
out.flush();
}
System.out.println("的值"+b)//;这里b的值确实是-1;
可是上一个例子中bytes为什么不是-1?