关于BufferefReader.readLine()方法的理解
2017-09-07 15:38
369 查看
背景 :
物联网 Esp8266 + Android App
死活收不到 Esp8266发送的测试数据, 最后在同学暴力 debug 的过程中(非常感谢这位同学), 注意到了 读输入流的 readline 的操作。。以前做的项目 真的是没注意这点。。赶紧写了篇博客 作为 以后对 自己的提醒。
有以下代码:
仔细读下面的这句话:
本来以为localReader.readLine()读取不到数据时会返回null,结果执行代码后不输入数据时一直停留在while循环体内等待,故readLine()方法是一个阻塞函数。Java API文档如下描述:
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"或者回车符后面紧跟着换行符时,该行结束并返回。没有数据时,将会一直处于等待状态。因此在进行网络连接时,应该避免使用该方法。
参考:
http://www.cnblogs.com/wuchaodzxx/p/5515316.html http://blog.csdn.net/i_lovefish/article/details/12776739
物联网 Esp8266 + Android App
死活收不到 Esp8266发送的测试数据, 最后在同学暴力 debug 的过程中(非常感谢这位同学), 注意到了 读输入流的 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"或者回车符后面紧跟着换行符时,该行结束并返回。没有数据时,将会一直处于等待状态。因此在进行网络连接时,应该避免使用该方法。
参考:
http://www.cnblogs.com/wuchaodzxx/p/5515316.html http://blog.csdn.net/i_lovefish/article/details/12776739
相关文章推荐
- 关于BufferefReader.readLine()方法的理解
- 关于BufferefReader.readLine()方法的理解
- JAVA中关于set()和get()方法的理解及使用
- 一篇文章理解所有android关于存储的方法
- 关于各种输入输出流的二次理解总结 ,以及输入的三种方法总结。
- 关于JAVA中Console.readLine()方法的使用!
- 理解 backbone.js 中的 bind 和 bindAll 方法,关于如何在方法中指定其中的 this,包含apply方法的说明[转载]
- 关于对java中synchronized修饰同一个类的两个方法的理解
- 关于对Android Activity 生命周期的7个方法的理解
- 深入理解关于javascript中apply()和call()方法的区别
- 面向对象的编程:关于对象的 属性、方法和事件 的理解
- java中关于final方法与static方法不具备多态性的理解
- 一篇文章理解所有android关于存储的方法
- 关于BaseAdapter的getView方法的理解
- IOS初学,关于内存的使用和释放,以及对其方法的理解
- 关于VB方法返回值为值类型时,出现要求对象的理解
- 关于各种输入输出流的二次理解总结 ,以及输入的三种方法总结。
- 关于Python中,re.sub(pattern, repl, string, count=0, flags=0)方法的个人理解
- 关于java中wait()和notify(),notifyAll()方法的理解
- 浅析关于ObjectC中的自定义初始化方法和便利构造器以及重写父类的description方法的理解