后台与CMD交互访问本地文件

//通过后台代码与CMD交互  访问本地jar
 try {
            //编辑命令 调用jar +  信息
            String cmd="cmd /c java -jar 123.jar ";
            Runtime runtime = Runtime.getRuntime();
            //执行cmd
            Process process = runtime.exec(cmd);
//            process.getInputStream() 是在你输入参数之后,获取控制台返回给你的信息
            //(new InputStreamReader(process.getInputStream(),"gb2312")中gb2312 转码使BufferedReader读取无乱码
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(),"gb2312"));
            //打印第一次返回信息
            System.out.println("第一次调用jar返回信息  "+br.readLine());
//            process.getOutputStream()获取的是你的输入参数
            PrintWriter writer=new PrintWriter(process.getOutputStream());
            //第二次输入cmd命令
            writer.println("ppp");
            //输出到控制台
            writer.flush();

            String json=null;
            while ((json = br.readLine()) != null) {
                //返回信息按行读取
                System.out.println("第二次输入返回信息  "+json);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


//另外的一种方式

    private
    OutputStream outputStream;

    private
    BufferedReader br;
//初始化加载
    @PostConstruct
    void init() {
        if ("windows".equals(os)) {
            try {
                //编辑命令 调用jar +  信息
                String cmd = "cmd /c java -jar " + 123.jar;
                System.out.println(cmd);
                Runtime runtime = Runtime.getRuntime();
                //执行cmd
                Process process = runtime.exec(cmd);
//            process.getInputStream() 是在你输入参数之后,获取控制台返回给你的信息
                //(new InputStreamReader(process.getInputStream(),"gb2312")中gb2312 转码使BufferedReader读取无乱码
                br = new BufferedReader(new InputStreamReader(process.getInputStream(), "GB2312"));
                //打印第一次返回信息
                System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()).toString() + "第一次调用jar返回信息  " + br.readLine());
//            process.getOutputStream()获取的是你的输入参数
                outputStream = process.getOutputStream();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            try {
                String cmd = "java -jar " + 123.jar ;
                String[] command = {"/bin/sh", "-c", cmd};
                //编辑命令 调用jar +  信息

                System.out.println(command);
                Runtime runtime = Runtime.getRuntime();
                //执行cmd
                Process process = runtime.exec(command);
//            process.getInputStream() 是在你输入参数之后,获取控制台返回给你的信息
                //(new InputStreamReader(process.getInputStream(),"gb2312")中gb2312 转码使BufferedReader读取无乱码
                br = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf8"));
                //打印第一次返回信息
                System.out.println(br.readLine());
//            process.getOutputStream()获取的是你的输入参数
                outputStream = process.getOutputStream();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    @GetMapping("validate")
    // 锁一下并发,防止获取数据时有其他输入
    public synchronized String validate(@RequestParam("text") String text, HttpServletRequest request) {
        //System.out.println(text);
        StringBuilder stringBuilder = new StringBuilder();
        try {

            //第二次输入cmd命令
            outputStream.write(text.getBytes("GB2312"));
            outputStream.write("\n".getBytes());
            //输出到控制台
            outputStream.flush();
            String json = null;
            while ((json = br.readLine()) != null) {
                //返回信息按行读取
                if ("请输入测试用例,退出请输入 \"quit\"!".equals(json)) {
                    break;
                }
                //输出返回信息
                System.out.println(json);
                stringBuilder.append(json);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
		//用指定的一个类接输出信息
        Obj jecObj = JsonUtils.fromJson(stringBuilder.toString(), Obj.class);
        RObj j = new RObj();
        j.setText(text);
        j.setConfidence(jecObj.result.matchInfo.confidence);
        j.setStatus(jecObj.returnX);
        j.setQuestionStd(jecObj.result.matchInfo.questionStd);
        j.setScore(jecObj.result.matchInfo.score);
        String retString = JsonUtils.toJson(j);
        log.info( "输入内容:" + text + "输出结果:" + retString);
       // log.info(retString);
        return retString;
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值