已采纳回答 / 管理員
if(bytes = in.read(buf,0,buf.length))!=-1相当于if(in.read(buf,0,buf.length)!=-1){//但是却不能这么写 bytes = in.read(buf,0,buf.length);}可以研究一下怎么看jdk源码如果读到了末尾会返回一个值“-1”,方法就是这么定义的。
2015-07-23
最新回答 / yangyang533
readpublic abstract int read() throws IOException从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。子类必须提供此方法的一个实现。返回:下一个数据字节;如果到达流的末尾,则返回 -1。抛出:IOException - 如果发生 I/O
错误。从API的理解来看,read是每次读取...
2015-07-15
最赞回答 / 许晓涛
比如说,现在有一个水管,水流很慢,一滴一滴的流,然后你只能一滴一滴的喝。不过呢你有了一个杯子(BuffederInputStream)你可以让杯子一滴一滴的接着。什么时候不需要水了,拿起来直接喝掉。这就是缓冲区
2015-07-07
已采纳回答 / 墨雨忆诗
缓冲区的每次的复制文件的速度是会发生变化的,不是固定不变的(你自己可以试试),而且,批量缓存的速度太快了,而缓存速度又会或上或下的改变,因此,我们无法做出正确的判断,所以,用批量缓存来判断缓存区对文件的复制效率是不准确的
2015-06-15
已采纳回答 / 源代码_思无邪
在这个程序里,你的这个变量bytes=in.read(buf,0,buf.length),得到的是读取的字节个数。用它去判断是否小于等于15(bytes<=oxf)是没有意义的。应该是在for循环内通过判断if(buf[i]<=oxf)单个字节是否小于等于15才有意义。你说前面的可以,可能你用的是bytes=in.read();这是每次读取一个字符,当然可以。请记清楚,int bytes = in.read(buf,0,buf.length)和int bytes=in.read()是完全不同的...
2015-05-17