当前位置: 首页 > 面试题库 >

关闭BufferedReader和System.in

汪永春
2023-03-14
问题内容
Reader rdr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(rdr);
String s;
s = br.readLine();
br.close();
Scanner sc = new Scanner(System.in);
s = sc.nextLine();
System.out.print(s);

我注意到,如果关闭BufferedReader,我将无法再从键盘插入输入,因为System.in已经关闭了。无论如何,我可以保留br.close()(删除文件时需要它),然后从键盘添加更多输入吗?


问题答案:

看起来您需要:

http://commons.apache.org/io/apidocs/org/apache/commons/io/input/CloseShieldInputStream.html

在制作读者之前,先将System.in环绕起来,然后一切都会好起来的,因为使用FileInputStream时不会这样做。



 类似资料:
  • 问题内容: 我正在使用包裹在FileReader周围的BufferedReader读取本地文件: 我需要close()的为好,或将包装处理这个问题?我看过代码,人们在这里做这样的事情: 从Servlet调用此方法,并且我想确保我没有打开任何句柄。 问题答案: 没有。 根据javadoc为和关闭流 以及

  • 问题内容: 我有一个使用简单套接字在两个系统之间传递某些字符的应用程序。我的Java应用程序作为服务器运行。我建立了良好的连接,甚至传递了一条消息。但是,发送完一条消息后,我的连接关闭。 从我可以看出来的好像是在关闭时,套接字本身正在关闭吗?!这很不好,因为我有多个要在同一连接上发送的消息。 我吃饱了吗?如何在Java中维护此连接? 问题答案: 是的,关闭任何作家/读者将关闭他们包装的所有其他作家

  • 问题内容: 在我应重视和每当用户希望看到它或不分离。附加工作正常,但分离失败。中断方法的默认答案始终是关闭流,但是在这种情况下,我将无法完成,否则将完成或至少无法用于将来的附件。这是读取流的方式: 为了分离,我尝试了一些东西: 关闭任何流,失败:close方法被阻塞并等待readLine() 实现另一个流,以发送空值/中止值,失败:当一个人等待输入时,另一个甚至没有被调用 使用反射来解锁任何流中的

  • 问题内容: 很多人问这样的问题,但这个问题有些不同。这是代码: 程序运行时方法被多次调用。第二个呼叫原因。我不明白:为什么会这样呢?每次我们声明新的。所以必须也是新的。或不? 如果没有,我应该如何组织我的程序,以便在所有调用之后和程序结束后关闭读者? 问题答案: 因为是相同( 的两个方法类) 调用 使用,在一种方法闭会自动关闭用于其它方法。一旦调用完成,您应该从 外部 关闭该方法( 如我所见),这

  • 嗨,我只知道这是一个古老的问题,但今天只是好奇。正如我们所知connection.close也会关闭preared语句(如果我错了请纠正我)。但是如果我关闭连接然后关闭preared语句会怎样 我会得到一个空指针异常吗? 有人说这取决于jvm的速度。有时,ps.close()会在conn.close完成其工作之前运行并首先关闭,因此您不会得到null指针。 为了测试它,我修改了代码 但是我没有得到

  • 问题内容: 我有三个问题。 为了解释,我正在查看某人的代码,并注意到有时没有关闭。通常,Eclipse会警告您这是潜在的内存泄漏(我已修复)。但是,在Callable内部类中,没有警告。 编写代码的人都是经验丰富的Java开发人员,所以我首先想到的是它是故意的…但是可能是他们在编写代码时只是匆忙而忽略了它。 我的问题是: Eclipse为什么不突出显示这一点(可以通过以下问题的答案来回答)? 如果