关键词搜索

源码搜索 ×
×

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

发布2022-11-21浏览949次

详情内容

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

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

1、主程序

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

@SpringBootApplication
public class WodProcessorApplication{

    public static void main(String[] args) {
        Thread t = new Thread(new Runner());//Runner
        t.setName("wodASC调用程序");
        t.run();
        try {
            t.join();
        } catch (InterruptedException ex) {
            System.out.println("程序中断。。。");
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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("退出程序");
        }

        @Override
        public void run() {
            System.out.println("正在退出...");
            bExit = true;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

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

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载