首页 > 编程语言 >java如何调用外部程序

java如何调用外部程序

时间:2024-09-23 18:27:36浏览次数:8  
标签:调用 java 外部 abstract 程序 value current public

java如何调用外部程序

2017-03-15 20:50 179人阅读 评论(0) 收藏 举报 分类:

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

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

一.调用外部程序接口

方法1.

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

方法2.

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

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

[java] view plain copy
  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个函数用的最多

二.代码实战

[java] view plain copy
  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)  


程序执行结果:

[java] view plain copy
    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:0 

标签:调用,java,外部,abstract,程序,value,current,public
From: https://www.cnblogs.com/520future/p/7474359.html

相关文章

  • oracle数据类型和对应的java类型
    [转]oracle数据类型和对应的java类型 地址:http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm#BHCJBJCCSQL数据类型JDBC类型代码标准的Java类型Oracle扩展的Java类型 1.0标准的JDBC类型:  CHARjava.......
  • 命令窗口调用软件的命令
    命令窗口调用软件的命令compmgmt.msc    计算机管理devmgmt.msc     设备管理器diskmgmt.msc    磁盘管理实用程序(可以进行有损分区)wmimgmt.msc     打开windows管理体系结构(WMI):Wmimgmt-[控制台根节点\WMI控件(本地)]certmgr.msc     证书管......
  • 【Python调用ddddocr打包成exe文件指定模型库及注意事项】
    ddddocr打包成exe后一直存在各种各样的问题,例如:ddddocr\common.onnxfailed.Filedoesn’texist查阅资料后,问题得到解决。但相关资料不多,且不够详细,特写下本文,以便于后来者解决问题。希望本文能帮到你。目标:为了方便调用,打算分别起三个服务,并且打包成EXE方便......
  • java 如何实现判断一个对象所有的属性是否为空
     能适配所有类型的:Personperson=newPerson();person.setId(0);//---truePersonperson=null;//---truePersonperson=newPerson();person.setName("xxx");//---falsePersonperson=newPers......
  • Javascript调试命令——你只会Console.log() ?
    Javascript调试命令——你只会Console.log()?https://segmentfault.com/a/1190000012957199Console对象提供对浏览器控制台的接入(如:Firefox的WebConsole)。不同浏览器上它的工作方式是不一样的,但这里会介绍一些大都会提供的接口特性。Console对象可以在任何全局对象中访问,......
  • JAVA Response 返回值再拿
    在Java中,当你需要从Response对象中获取返回值时,可以使用以下方法:首先,确保你已经导入了相关的库。例如,如果你使用的是java.net.HttpURLConnection,则需要导入以下包:importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjav......
  • springboot基于Java的高校学生食堂系统(源码+vue+部署文档+前后端分离等)
    收藏关注不迷路!!......
  • 【解决方案】Java 互联网项目中常见的 Redis 缓存应用场景
    一、常见key-value首先介绍的是项目开发中常见的一些String类型的key-value结构场景,如:使用jsonStr结构存储的用户登录信息,包括:手机号、token、唯一uuid、昵称等;jsonStr结构某个热门商品的信息,包括:商品名称、商品唯一id、所属商家、价格等;String类型的、......
  • 【计算机专业毕设最新Java必过毕设选题2025】基于微信小程序的美食推荐小程序(源码+万
    作品简介 Hi,各位同学好呀!今天向大家分享一个最新完成的高质量毕业设计项目作品基于uniapp+springboot的XXX微信小程序项目评分(最低0分,满分5分)难度系数:3分工作量:5分创新点:3分界面美化:5分使用技术前端:uniapp后端:springboot数据库:MySql服务器:apache-tom......
  • [AI回答]Java中Long和long的区别,为什么在Springboot项目中一般使用Long
    Long和long的区别在Java中,Long和long是两个不同的概念,它们分别代表不同的数据类型:long:这是一个基本数据类型(primitivetype)。它用于存储64位带符号的整数。它的取值范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。在使用long类型变量时,......