黑马程序员技术交流社区

标题: 关于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