问答详情
源自:5-1 字节字符转换流

批量读取是否还需要循环与判断-1

xxx.read()一个一个读需要判断!=-1来停止循环可以理解,为啥批量读取也需要循环和判断-1,批量读取不是直接把所有的内容都读到数组里再全都打印到控制台吗,为什么还需要循环和判断-1,我把循环和判断-1去掉也能打印完全啊,求大大指点

提问者:蛋黄酱0 2016-01-19 17:40

个回答

  • 慕工程2957023
    2016-06-30 15:15:36

    我觉得原因是,即使是批量读取容量也是有限的,不一定能一次读完,所以要加循环

  • 梁XX
    2016-02-21 21:21:46

    我们来看API:

                    int tmpRead;
    		while((tmpRead=charReader.read())!=-1) {  
    		//.read() :Reads a single character.
    	        //The character read, or -1 if the end of the stream has been reached
    			charWriter.write(tmpRead);
    			}

    读取单个字符/字节,返回所读的单个字符(InputStreamReader)/字节(FileInputStream),否则当空或结尾的时候返回-1 。

    当读到字符/字节时, 赋值给tmpRead, 

    当读到结尾/该文件本身就是空,返回-1,-1结束,不存入output流


  • brucelwl
    2016-01-20 15:08:57

    需要的,因为批量多的时候,是读取你指定的长度,但是这时候并不应定会读完,所以仍然需要判断