Java Process Class : Java 执行外部程序及命令 .
来源:互联网 发布:创游网络 编辑:程序博客网 时间:2024/05/19 13:26
不知道大伙有没有遇到类似的问题, 你用java搭建了一个系统平台,却发现你想引入的一个组件是用其它语言写成的。 如果那个组件是用c写的,你或许会想用java native code就可解决,但是如果那个组件是用perl, python, ruby写的,你又该如何呢? 如果你没有那个组件的源代码, 只有该组件已编译好的程序,你又该如何呢?
这种问题不是不可能发生的,本人从事数据挖掘系统的开发,之前就遇到这样的问题。我在网上找到了一个很好的分类算法-c4.5, 那是个开源软件, 用c写成的,非常复杂难读。另一方面,我们担心如果硬把这个c程序改成 java程序,它的运行效率会下降,正所谓是吃力不讨好。最后我们找到了‘使用java直接执行外部程序’ 这个方法来解决问题。
方法很简单,其实只要使用两个在java.lang包中的类就能解决,一个是java.lang.Runtime, 另一个为java.lang.Process, 费话少说,各位懂行的看官,请看代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ExeAgent {
/**
* @rwang
*/
/*
Class Runtime is the object to run external program
Class Process is the object to handle the outputs
*
*/
public static void execute(String commands){
try {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(commands); // Exception need to be handle
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line=null;
while((line=input.readLine()) != null) {
System.out.println(line);
}
} catch(Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
public static void main(String[] args) {
String line = "java HelloWorld"; // java HelloWorld 是一个可执行命令, 任何可执行命令(程序)都可以替换它
// String line = "dir" dir命令将会被执行
ExeAgent.execute(line);
}
}
如果希望JVM等候外部命令完成执行后, 再继续执行余下命令行。 可以使用 waitFor() 方法, 例代码为:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(commands); try{ int status = pr.waitFor();
}catch(InterruptedException e){}
- Java Process Class : Java 执行外部程序及命令
- Java Process Class : Java 执行外部程序及命令
- Java Process Class : Java 执行外部程序及命令 .
- java程序执行外部命令
- Process 执行Linux命令/调用外部程序
- java执行外部命令
- Java执行外部程序
- java执行外部程序
- java命令执行class
- 兼容timeout的Java执行外部命令的小程序
- 浅析Java执行外部命令
- java语言执行外部命令
- java中执行外部命令
- 用java执行外部命令
- java调用外部程序执行
- Java中的Process,执行一个命令
- java process exe.exec 执行exe程序
- Java调用外部程序命令
- 机器学习初窥
- aptitude
- TOMCAT::: The absolute uri: http://java.sun.com/jstl/core_rt cannot be resolved in 错误
- VB.NET视频总结
- 6分钟了解辐射
- Java Process Class : Java 执行外部程序及命令 .
- Assertion failure in -[GPUImageMovieWriter createDataFBO]
- tomcat发布项目问题汇总
- 贪心算法——经典习题
- git的介绍与使用
- LVS负载均衡
- 杂文:创新,淘宝,马云,阿里,美国,工商局,假货
- apktool反编译的一些问题
- Android 点击控件(比如ListView中item),抬起后,保持按下的背景颜色