如何对BufferedReader.readLine做超时支持 BufferedReader的readLine方法不支持超时,如何为其包一个可以支持超时的壳子?BufferedReader是Java的自带类,是不能修改的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不明白“readLine方法不支持超时”的意思。 如果没有数据来,readLine会一直等待,这就是不支持超时 给你一个方法,参考一下long maxwaittime = 20000//设定一个最大等待时间,比如20秒boolean b = true;//超时标志位long l1 = System.currentTimeMillis();//取系统当前时间//去读文件,br对象是你之前实例化的BufferdReaderString 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); } }这样,看看能不能完成你要的功能 实现子类,覆盖readLine方法的实现 ls的办法或许能解决,不过它原本不支持超时是有道理的。不知道lz为什么需要超时的支持?如果是读文件,不会超时。如果读socket流,ReadLine会因为末尾没有\n而一直等待,但是程序也不应该这么读。主要想看Lz用在什么场景下 蝴蝶文形成 有几个链接 一个链接默认已经点击 档点击其他某个链接 这个链接回到原来的状态怎么做? 如何通过菜单项切换到某个dialog? 跪求解答,集合问题 有没有简单一点的方法来包含文件? 两个byte型的变量怎么和成一个? 小弟的一个Java程序,请高手指点迷津。 线程Thread在jdk1.4中,有没有替代stop()、suspend()、resume()的方法? 如何可以做到不用刷新就可以更新页面 链表的问题??? JAVA或者C#中如何获取并输出调用堆栈上的变量值? 新手问题一段代码
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);
}
}
这样,看看能不能完成你要的功能