• java中运行python脚本


    package com.ruoyi.python;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Objects;
    
    /**
     * @author 
     * @date Create in 2020/5/22
     **/
    public class DemoTest {
    
        private static final String[] python = {"python", "D:\ruoyi\RuoYi-Vue\ruoyi\src\main\resources\hello.py", "zhangsan"};
    
        public static void main(String[] args) throws IOException, InterruptedException {
    //        Runtime.getRuntime().exec()实现了调用服务器命令脚本来执行功能需要
               /*
               * 1、runtime类:代表了当前程序的运行环境
               * 2、getRuntime():该方法用于返回当前应用程序的运行环境对象
               * 3、exec:根据地址执行相应的可执行文件
               *     public Process exec(String command)-----在单独的进程中执行指定的字符串命令。
               *     public Process exec(String [] cmdArray)---在单独的进程中执行指定命令和变量
               *     public Process exec(String command, String [] envp)----在指定环境的独立进程中执行指定命令和变量
               *     public Process exec(String [] cmdArray, String [] envp)----在指定环境的独立进程中执行指定的命令和变量
               *     public Process exec(String command,String[] envp,File dir)----在指定环境和工作目录的独立进程中执行指定的字符串命令,并传入参数
               *     public Process exec(String[] cmdarray,String[] envp,File dir)----在指定环境和工作目录的独立进程中执行指定的命令和变量,并传入参数
               * */
    
    //           process类:封装了一个进程.可以通过Runtime.getRuntime().exec()实现,也可以通过ProcessBuilder.start()创建进程
            /*
            *Process 类提供了子进程的输入流,子进程的输出流子进程的输入流,等待进程完成,检查进程的推出状态以及销毁进程的方法;
            *创建的子进程没有自己的控制台或终端,其所有的io操作都是通过(输入流、输出流、错误流)重定向到父进程中。
                    *destroy()  杀掉子进程。
                    *exitValue()   返回子进程的出口值。
                    *InputStream getErrorStream()  获得子进程的错误流。
                    *InputStream getInputStream()  获得子进程的输入流。
                    *OutputStream getOutputStream() 获得子进程的输出流。
                    *waitFor() 导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。
            *
            *
            * */
            Process exec = Runtime.getRuntime().exec(python);
    
            // success:0 成功, 1: 失败
            int success = exec.waitFor();
    
    //        inputStreamReader():字节流到字符流的桥接器。inputStreamReader()继承自StreamDecoder,fileReader继承自InputStreamReader()
    //        BufferedReader():缓冲流
            BufferedReader reader = new BufferedReader(new InputStreamReader(exec.getInputStream(), "GBK"));
    //        StringBuilder 是一个可变的字符序列。它继承于AbstractStringBuilder,实现了CharSequence接口。
    //        StringBuffer 也是继承于AbstractStringBuilder的子类;但是,StringBuilder和StringBuffer不同,前者是非线程安全的,后者是线程安全的。
            StringBuilder builder = new StringBuilder();
            String line;
    //        reader.readLine():按行读取字符串,这个文件读完返回null
            while (Objects.nonNull(line = reader.readLine())) {
    //            append():拼接字符串
                builder.append(line);
            }
            System.out.println(builder.getClass().toString());
            System.out.println(success+builder.toString());
        }
    }
  • 相关阅读:
    高性能SQL编码规范
    识别SQL Server 性能杀手
    centOS7安装nginx
    linux安装apache
    算术表达式的前缀表达式,中缀表达式和后缀表达式
    有特殊字符的JSON串
    sqlserver 找到执行慢的sql
    SQL索引建立遵守六大铁律
    [SQL Server 2005/2008] select语句中指定索引
    ubuntu下vsftpd虚拟用户配置
  • 原文地址:https://www.cnblogs.com/fbbg/p/12940088.html
Copyright © 2020-2023  润新知