gpt4 book ai didi

java - try-with-ressources 在创建并关闭之前无法创建新的 BufferedWriter

转载 作者:行者123 更新时间:2023-12-01 22:19:43 26 4
gpt4 key购买 nike

程序显示控制台菜单,您可以选择内容,直到选择 (0) 并退出程序。

首先,程序按预期运行,我可以选择一个选项并调用 addPersonMenu()deletePersonMenu()。在 showMainMenu() 中执行每个操作后,菜单应在控制台上重建,以便在 main 方法中再次调用 showMainMenu() 方法。但这一次它将抛出一个IOException: Stream closeed并退出。

Eclipse 中的 Debug模式显示 try-with-ressources block 无法打开新的 BufferedReader,尽管它应该正确关闭并且应该释放资源.

有什么想法吗?

public static void main(String[] args) {

while(!exit) {

showMainMenu()
}
}

private static void showMainMenu() {

System.out.println("(1) Add new person");
System.out.println("(2) Edit existing person");
System.out.println("(3) Delete person");
System.out.println();
System.out.println("(5) Save changes");
System.out.println("(0) Exit without saving");

try (BufferedReader br = new BufferedReader(new InputStreamReader(
System.in))) {

switch (Integer.parseInt(br.readLine())) {
case (1):
addPersonMenu();
break;
case (2):
// editPersonMenu();
break;
case (3):
deletePersonMenu();
break;
case (5):
// saveChanges();
break;
case (0):
exit();
break;
default:
System.out.println("Invalid input! Repeat!");
}
} catch (IOException e) {
e.printStackTrace();
exit = true;
}
}

最佳答案

这是正常的:您在方法中关闭了 System.in

你应该做的是这样的:

try (
// open the resource here
) {
String line;
while ((line = reader.readLine()) != null)
showMainMenu(line);
}

尤其是每次重新打开阅读器都是浪费。

关于java - try-with-ressources 在创建并关闭之前无法创建新的 BufferedWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30156164/

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