关于BufferefReader.readLine()方法的理解
来源:互联网 发布:php代理商系统源码 编辑:程序博客网 时间:2024/06/06 00:39
背景 :
物联网 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
阅读全文
0 0
- 关于BufferefReader.readLine()方法的理解
- 关于BufferefReader.readLine()方法的理解
- Readline的理解
- 关于JAVA中Console.readLine()方法的使用!
- 关于Console.ReadLine()的问题
- DataInputStream的过期方法readLine()
- readLine()方法
- 关于java中BufferedReader的read()及readLine()方法的使用注意
- 关于java中BufferedReader的read()及readLine()方法的使用注意
- 关于java中BufferedReader的read()及readLine()方法的使用心得
- [转]关于java中BufferedReader的read()及readLine()方法的使用心得
- 关于Console.ReadLine()与缓冲区的问题
- 关于缓冲区readLine函数的原理
- 关于socket的readLine和read问题
- 关于BufferedReader readline 阻塞的问题
- 关于BufferReader中readLine的问题!小心!
- IOS下的readLine方法的实现
- BufferedReader的readLine方法阻塞的处理
- Python3 安装
- Servlet 生命周期
- MYSQL数据库指定编码格式
- curses库 安装 和使用
- 图片转为base64
- 关于BufferefReader.readLine()方法的理解
- JMeter-监听器
- Notification的一些新特性
- poi导出excel
- datatables 获取某一行的json数据
- 347. Top K Frequent Elements
- Java基础知识_毕向东_Java基础视频教程笔记(14-18集合框架)
- powershell 自动编译发布
- C-1