关于InputStream里的read(byte[] b, int off, int len)

来源:4-5 字节缓冲流

自小生来神气壮

2016-07-09 21:18

InputStream fi = new FileInputStream(file1);   

OutputStream fo = new FileOutStream(file2);    

byte[] b = new byte[fi.available];

while((int i = fi.read(b,0,b.length)) != -1) {

    fo.write(b,0,i);

}

请问这个read是一次就能把fi流里的东西全部读出来还是一部分一部分地读,如果是一部分一部分读,那读到末尾-1了结束循环最后读取那次带-1的部分是不是就读不进去了。(请无视截图)

写回答 关注

3回答

  • XhstormR
    2016-09-14 18:22:39

    老师讲的很清楚了。

  • 大咪
    2016-07-13 10:00:18

    批量读取啊,每次都读,从零开始读,一直读取到b.length这个长度,当全部读完,返回-1,则结束

  • 慕粉3581550
    2016-07-10 13:51:14

    你的代码是批量读取,就是一部分一部分的读,每一次read都会返回一个int值,代表这一次读取实际获得的字节数,如果返回-1,则代表没有读取到内容,就结束了

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题