如何解决带有新InputStreamReaderSystem.in的BufferedReader引发异常临时不可用的资源
在独立应用程序中,我必须从控制台中的不同类中读取用户输入。 我在Installer类中创建了一个静态类成员变量
public static final BufferedReader buffReader = new BufferedReader(new InputStreamReader(System.in));
但是Installer.buffReader.readLine();抛出IO异常-有时“暂时不可用的资源”
public static void startApplication() {
System.out.println("Would you like to start the application? [y/n]");
String userChoice = null;
try {
userChoice = Installer.buffReader.readLine();
if (userChoice != null && userChoice.equalsIgnoreCase("y")) {
start();
}
} catch (IOException ex) {
LOGGER.error("Exception occured in startApplication() :{}",ex.getMessage());
}
}
如何调试或阻止它?
解决方法
我认为是因为您在这里调用相同的方法
if (userChoice != null && userChoice.equalsIgnoreCase("y")) {
startApplication();
}
所以第二次调用该方法会引发异常,因为bufferedReader仍处于打开状态。
尝试使用buffReader.close()关闭bufferedReader。或者不要将static用于BufferedReader,因为如果应用程序的其他部分正在使用它,您也会遇到异常。
编辑:
我在google中搜索了一点点,可能是因为您的操作系统由于某种原因而阻止了输入。我尝试了您的代码,但对我而言却没有失败。检查是否存在类似情况:Link
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。