问答详情
源自:4-3 字节流之文件输出流FileOutputStream

关于while((b=in.read(by,0,by.length))!=-1),这个这的返回值是怎么回事?

如果说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));

}


提问者:慕工程2957023 2016-06-29 17:03

个回答

  • XhstormR
    2016-09-15 10:13:45

    读完了就返回 -1。

  • FateForever
    2016-07-03 21:34:51

    out.write(buf,0,b);

    将长度为b(其中b = in.read(buf, 0, buf.length))的字节从字节数组buf的第0个位置开始写入到流


  • 飞扬拽拽
    2016-06-29 17:24:21

    int bytes=in.read(by,0,by.length) 返回的是长度。

    while((b=in.read(by,0,by.length))!=-1)循环读取,  第一次直接读完了,返回了长度, 打印。 再循环读,返回-1

  • 慕工程2957023
    2016-06-29 17:12:27

    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?