gpt4 book ai didi

java - 创建新的 BufferedReader 后,当流关闭时,从 BufferedReader 读取会引发异常

转载 作者:行者123 更新时间:2023-12-02 02:02:15 29 4
gpt4 key购买 nike

以下是接受用户输入并返回响应的方法。

private String getValueFromUser(String propertyValue){
String response = "";
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))){
response = br.readLine();
if (response.equals("")){
return propertyValue;
}
} catch (IOException e) {
e.printStackTrace();
}
return response;
}

此方法在执行时第一次调用运行良好,但在后续调用中抛出以下异常。

java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170)
at java.io.BufferedInputStream.read(BufferedInputStream.java:336)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at com.ripple.utility.ConfigurationUtility.getValueFromUser(ConfigurationUtility.java:119)
at com.ripple.utility.ConfigurationUtility.createPropertiesDTO(ConfigurationUtility.java:108)
at com.ripple.utility.ConfigurationUtility.setProperties(ConfigurationUtility.java:169)
at com.ripple.utility.ConfigurationUtility.main(ConfigurationUtility.java:191)

有人可以帮忙解释一下代码的问题吗?

最佳答案

BufferedReader 在 try-with-resources block 末尾关闭时,System.in 也会关闭并且无法重新打开。

您应该打开阅读器一次,并将其保持在可以使用它的地方,直到程序完成为止。

关于java - 创建新的 BufferedReader 后,当流关闭时,从 BufferedReader 读取会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51394515/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com