热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用java编写的命令行工具实现按下ctrl+c退出

前文再续,书接上一回,上一篇文章介绍了我如何用java实现了一个调用外部程序的命令行工具,本文则介绍如何实现按下ctrlc退出这个命令行。

前文再续,书接上一回,上一篇文章介绍了我如何用java实现了一个调用外部程序的命令行工具,本文则介绍如何实现按下ctrl + c退出这个命令行。

代码其实并不复杂。只是调试的时候被坑。原因是代码没什么问题,但在idea调试的时候,不起作用;发布出来运行,才有效果。搞来搞去,浪费了不少时间。

1、主程序

就是一个十分原始的spring boot项目,入口:

@SpringBootApplication
public class WodProcessorApplication{public static void main(String[] args) {Thread t = new Thread(new Runner());//Runnert.setName("wodASC调用程序");t.run();try {t.join();} catch (InterruptedException ex) {System.out.println("程序中断。。。");}}
}

2、运行线程

import java.util.Scanner;public class Runner implements Runnable {private boolean bExit = false;public Runner() {Runtime.getRuntime().addShutdownHook(new ExitHandler());}public void run() {System.out.println();System.out.println("============== wodASC批量转换工具(Ctrl + C 退出)==============");System.out.println();Scanner sc = new Scanner(System.in);while (!bExit) {System.out.println("请输入待处理的文件夹完整路径:");String path = sc.nextLine();//InvokeHandler是自定义的,调用外部程序的工具,详见参考文章一InvokeHandler handler = new InvokeHandler(path);bExit = handler.start();}System.out.println();System.out.println("程序已结束,按回车退出");sc.nextLine();}private class ExitHandler extends Thread {public ExitHandler() {super("退出程序");}@Overridepublic void run() {System.out.println("正在退出...");bExit = true;}}
}

参考文章:
使用java编写一个调用第三方可执行文件的windows命令行工具
如何在Java程序中处理Ctrl+C


推荐阅读
author-avatar
Triste夏木_668_365
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有