关于BufferefReader.readLine()方法的理解


  有以下代码:      

 1 BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
 2 String msg=null;
 3 System.out.println("out of while loop!");
 4 while((msg=localReader.readLine())!=null){
 5     System.out.println(msg)
 6     if(msg.equals("bye")){
 7         break;
 8     }
 9                     
10 }    

 

  本来以为localReader.readLine()读取不到数据时会返回null,结果执行代码后不输入数据时一直停留在while循环体内等待,故readLine()方法是一个阻塞函数。Java API文档如下描述:

public String readLine()throws IOException
  Reads a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.

  表示该方法读取一行文本,当遇到换行符"\n",回车符"\r"或者回车符后面紧跟着换行符时,该行结束并返回。没有数据时,将会一直处于等待状态。因此在进行网络连接时,应该避免使用该方法。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM