如何对BufferedReader.readLine做超时支持

compext 2009-06-19 11:15:29
BufferedReader的readLine方法不支持超时,如何为其包一个可以支持超时的壳子?
BufferedReader是Java的自带类,是不能修改的
...全文
1120 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
弘石 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yanglu3687 的回复:]
每一种需求都有原因,不会吧,咱就闭嘴看看,别妄加评论说人家的需求合理不合理,他自己用不上也不会跑这和你瞎咧咧。
[/Quote]
你不就在这瞎咧咧呢吗?
魔术师TK 2009-07-02
  • 打赏
  • 举报
回复
每一种需求都有原因,不会吧,咱就闭嘴看看,别妄加评论说人家的需求合理不合理,他自己用不上也不会跑这和你瞎咧咧。
弘石 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yys79 的回复:]
ls的办法或许能解决,不过它原本不支持超时是有道理的。不知道lz为什么需要超时的支持?如果是读文件,不会超时。如果读socket流,ReadLine会因为末尾没有\n而一直等待,但是程序也不应该这么读。主要想看Lz用在什么场景下
[/Quote]
确实楼主提的要求不太合理,楼主应该说说你为什么要实现这样的功能
loveunittesting 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 youthon 的回复:]
实现子类,覆盖readLine方法的实现
[/Quote]
ls的办法或许能解决,不过它原本不支持超时是有道理的。不知道lz为什么需要超时的支持?如果是读文件,不会超时。如果读socket流,ReadLine会因为末尾没有\n而一直等待,但是程序也不应该这么读。主要想看Lz用在什么场景下
compext 2009-06-19
  • 打赏
  • 举报
回复
看到有人回贴,一阵兴奋,没想到是这个。。。不过还是感谢你的支持
amik007 2009-06-19
  • 打赏
  • 举报
回复
ding
弘石 2009-06-19
  • 打赏
  • 举报
回复
实现子类,覆盖readLine方法的实现
jidushanbojue 2009-06-19
  • 打赏
  • 举报
回复
给你一个方法,参考一下

long maxwaittime = 20000//设定一个最大等待时间,比如20秒
boolean b = true;//超时标志位
long l1 = System.currentTimeMillis();//取系统当前时间

//去读文件,br对象是你之前实例化的BufferdReader
String s = null;
while((s = br.readLine()) !=null && b){
long l2 = System.currentTimeMillis();
if(l2-l1<maxwaittime){
//此次操作在设定的最大等待时间之内
//在此你要做的事,比如写文件,bw.write(s+"\r\n");
}
else{
//超时处理
b = false;
JOptionPane.showMessageDialog(null,"读文件超时!","系统提示",JOptionPane.WARNING_MESSAGE);
}
}


这样,看看能不能完成你要的功能
compext 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bigbug9002 的回复:]
不明白“readLine方法不支持超时”的意思。
[/Quote]
如果没有数据来,readLine会一直等待,这就是不支持超时
bigbug9002 2009-06-19
  • 打赏
  • 举报
回复
不明白“readLine方法不支持超时”的意思。
zhangcongfd 2009-06-19
  • 打赏
  • 举报
回复
我也帮呢顶顶...呢你别又兴奋了

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧