黑马程序员技术交流社区
标题:
关于readLine方法的疑惑?
[打印本页]
作者:
于汝国
时间:
2011-12-22 12:40
标题:
关于readLine方法的疑惑?
本帖最后由 于汝国 于 2011-12-23 10:08 编辑
在IO操作中有BufferedReader对象,此对象有哪一个readLine方法,它的运行原理是什么?还有在网络编程中,用到此方法时,是属于阻塞式的,如何解决因此带来的真实等待问题?
作者:
陈帅雷
时间:
2011-12-22 12:46
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
作者:
袁泽宇
时间:
2011-12-22 13:08
本帖最后由 袁泽宇 于 2011-12-22 13:09 编辑
BufferedReader的readline()方法:
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回值:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
在网络编程中,socket无法判断到底后面还有没有内容,但是如果服务器那边write东西后再调用socket.close则会令BufferReader同样的返回了,而不会必须等待回车。
作者:
刘博
时间:
2011-12-22 13:13
不明思意后缀名是Reader的是字符流,也就是读取一个存字符数据的文本文件,readline();是读到有换行的标识符停止,比如\r \n;
作者:
杨强
时间:
2011-12-22 13:39
看源代码可以知道 readLine()方法是基于reader中的read()方法,下面是自己写的
import java.io.*;
public String readLine() throws IOException{
StringBuilder sb = new StringBuilder();
int c;
while((c= read())!=-1){
if(c=='\r')
continue;
if(c=='\n')
break;
sb.append((char)c);
}
return c == -1 && sb.length()== 0 ? null : sb.toString();
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2