java如何调用外部程序

java如何调用外部程序

分类:

引言;有时候有些项目需求,直接使用Java编写比较麻烦,所有我们可能使用其他语言编写的程序来实现。那么我们如何在java中调用外部程序,幸好

java为我们提供了这样的功能。

一.调用外部程序接口

方法1.

Process p=Runtime.getRuntime.exec("cmd")(最常用)

方法2.

Process p=new ProcessBuilder(cmd).start()

但是一般方法一比较常用, 下面我们介绍下方法一中关于抽象Process类的常用函数

  1. //向对应程序中输入数据  
  2. abstract public OutputStream getOutputStream();  
  3. //获得对应程序的输出流(没写错)  
  4. abstract public InputStream getInputStream();  
  5. //获得程序的错误提示  
  6. abstract public InputStream getErrorStream();  
  7. //等待程序执行完成,返回0正常,返回非0失败  
  8. abstract public int waitFor() throws InterruptedException;  
  9. //获得程序退出值,0正常退出,非0则异常  
  10. abstract public int exitValue();  
  11. //销毁进程  
  12. abstract public void destroy();  

其中前3个函数用的最多

二.代码实战

  1. package test;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. public class testProcess {  
  8. public static void main(String[]args) throws IOException, InterruptedException{  
  9.     Runtime r=Runtime.getRuntime();  
  10.     Process p=r.exec("python /home/cristo/桌面/test.py");  
  11.     InputStream is=p.getInputStream();  
  12.     InputStreamReader ir=new InputStreamReader(is);  
  13.     BufferedReader br=new BufferedReader(ir);  
  14.     String str=null;  
  15.     while((str=br.readLine())!=null){  
  16.         System.out.println(str);  
  17.     }  
  18.     //获取进程的返回值,为0正常,为2出现问题  
  19.     int ret=p.waitFor();  
  20.     int exit_v=p.exitValue();  
  21.     System.out.println("return value:"+ret);  
  22.    System.out.println("exit value:"+exit_v);  
  23.  }  
  24. }  

test.py中内容

[python] view plain copy
  1. for i in range(10):  
  2.     print("current i value:%s\n"%i)  


程序执行结果:

    1. current i value:0  
    2. current i value:1  
    3. current i value:2  
    4. current i value:3  
    5. current i value:4  
    6. current i value:5  
    7. current i value:6  
    8. current i value:7  
    9. current i value:8  
    10. current i value:9  
    11. return value:0  
    12. exit value:
posted @ 2024-09-23 18:24  未来的羁绊  阅读(5)  评论(0编辑  收藏  举报