gpt4 book ai didi

java - 在 Java 控制台中检测 Ctrl+C

转载 作者:行者123 更新时间:2023-12-01 16:43:17 24 4
gpt4 key购买 nike

我有一个控制台 Java 游戏。如果按下 Ctrl+C,游戏得分将保存在 JSON 文件中。将分数保存在 JSON 文件中的过程有效。但我不知道如何从控制台检测 Ctrl+C ,如果发生这种情况,我将保存分数(只是一个方法调用)。使用 KeyListener 时,它无法在控制台上运行(据我所知,仅适用于 JFrame)。

我在互联网上找不到问题的解决方案。

我必须使用运行时来完成此操作吗?我试过了,但是没用...

Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
Test.mainThread.interrupt();
}
});

Stackoverflow上有类似的问题,但不能在控制台上使用Catching Ctrl+C in Java

最佳答案

添加关闭 Hook 是正确的方法,但 Test.mainThread.interrupt(); 可能行不通。 JVM 已经关闭。你的主线程不太可能有时间响应中断;一旦所有关闭 Hook 完成,Java 就会终止。

只需让您的关闭 Hook 显式执行您需要采取的任何操作:

Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
try
{
Test.saveScore();
}
catch (IOException e)
{
System.err.println("Couldn't save score before terminating.");
e.printStackTrace();
}
}
});

关于java - 在 Java 控制台中检测 Ctrl+C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61821299/

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