A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于汝国 黑马帝   /  2011-12-22 12:40  /  2945 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 于汝国 于 2011-12-23 10:08 编辑

在IO操作中有BufferedReader对象,此对象有哪一个readLine方法,它的运行原理是什么?还有在网络编程中,用到此方法时,是属于阻塞式的,如何解决因此带来的真实等待问题?

4 个回复

正序浏览
杨强 黑马帝 2011-12-22 13:39:40
报纸
看源代码可以知道 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();
                               
                        }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
刘博 黑马帝 2011-12-22 13:13:55
板凳
不明思意后缀名是Reader的是字符流,也就是读取一个存字符数据的文本文件,readline();是读到有换行的标识符停止,比如\r    \n;
回复 使用道具 举报
本帖最后由 袁泽宇 于 2011-12-22 13:09 编辑

BufferedReader的readline()方法:
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回值:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

在网络编程中,socket无法判断到底后面还有没有内容,但是如果服务器那边write东西后再调用socket.close则会令BufferReader同样的返回了,而不会必须等待回车。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马