java - 在 Java 控制台中检测 Ctrl+C
问题描述
我有一个控制台 Java 游戏。Ctrl+C
如果按下,游戏得分将保存在 JSON 文件中。将分数保存在 JSON 文件中的过程有效。但我不知道,如何Ctrl+C
从控制台检测,如果发生这种情况,我会保存分数(只是一个方法调用)。使用KeyListener它在控制台上不起作用(据我所知,只有JFrame )。
我在互联网上找不到我的问题的解决方案。
我必须用Runtime来做吗?我试过了,但是没有用...
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
Test.mainThread.interrupt();
}
});
Stackoverflow 上有类似的问题,但不适用于控制台Catching Ctrl+C in Java
解决方案
添加关闭挂钩是正确的方法,但Test.mainThread.interrupt();
可能行不通。JVM 已经关闭。您的 mainThread 不太可能有时间响应中断;一旦所有关闭挂钩完成,Java 就会终止。
只需让您的关闭挂钩明确执行您需要采取的任何操作:
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();
}
}
});
推荐阅读
- android - 漏洞?Android BottomSheet 自动展开
- express - Heroku 不会保存 puppeteer 截图
- php - 我怎样才能让那些基本的雄辩关系发挥作用?
- angular - 角度日期转换
- typescript - 打字稿无法将对象添加到地图
- javascript - 选择选项不与搜索过滤器一起使用
- php - 我无法在 boostrap 模式上显示动态数据
- c++ - 奇怪的问题:SHFILEOPSTRUCT.pFrom 被赋值后发生变化
- r - 将数据框中的一列转换为具有二进制存在/不存在值的几列
- latex - 有没有办法保留参考书目的编号,但引用本身是 apa 风格的?