java流中read(byte[] b)和read(byte[] b,int off,int len)有什么区别

InputStream in = new FileInputStream(sourcePath);

byte[] b = new byte[1024];
while (in.read(b,0,1023)!=-1) {
System.out.println(new String(b));
};

while (in.read(b)!=-1) {
System.out.println(new String(b));
};
有什么区别?

后者定义了流读取时的缓冲区大小

带offset的功能更强大点
特别是计算百分比时候会很方便一些
都可以搞断点续传了
想像一下进度条

//还有一个read()无参数的,总共三个read方法

楼上说的对,后者定义了读取时缓冲区的大小,因为不是每次读取时缓冲区的数据都是最新的数据,比如,最后一次读取,很可能往缓冲区注入的数据不是byte【】的length,所以需要每次读取时确定往缓冲区中注入数据的长度。