java调用外部程序的方法及代码演示
作者:gundumw100 时间:2023-11-13 22:42:55
java调用外部程序的方法
在一个java应用中,可能会遇到这样的需求,就是需要调用一些外部的应用做一些处理,比如调用excel,然后在继续程序的运行。
下面就开始进入java调用外部程序的一些演示,让java应用更加灵活。
1:最简单的演示:
Runtime.getRuntime().exec("notepad.exe");
记事本被打开了是吧。
2:传递应用程序的参数:
Runtime runtime=Runtime.getRuntime();
String[] commandArgs={"notepad.exe","c:/boot.ini"};
runtime.exec(commandArgs);
现在不单单打开了记事本,而且还装载了boot.ini文件是吧。
现在已经完全解决了调用外部程序的问题,不是吗,但是大家会发现exec方法是有返回值,那么继续我们的演示吧。
1:Process的waitFor:
Runtime runtime=Runtime.getRuntime();
String[] commandArgs={"notepad.exe","c:/boot.ini"};
Process process=runtime.exec(commandArgs);
int exitcode=process.waitFor();
System.out.println("finish:"+exitcode);
执行上面的代码以后发现不同的地方了吗,waitFor会使线程阻塞,只有外部程序退出后才会执行System.out.println("finish:"+exitcode);
这个功能很有用是吧,因为多数时候你都需要等待用户处理完外部程序以后才继续你的java应用。
2:Process的destroy:
Runtime runtime=Runtime.getRuntime();
String[] commandArgs={"notepad.exe","c:/boot.ini"};
final Process process=runtime.exec(commandArgs);
new Thread(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {}
process.destroy();
}}).start();
int exitcode=process.waitFor();
System.out.println("finish:"+exitcode);
这个演示稍微复杂了一些,如果你等待5秒,就会发现记事本自动关闭了,是的,这个就是destroy方法的作用,强制关闭调用的外部程序。
不用我解释了吧,这是非常有用的方法。
以上的部分已经足够你调用并控制你的外部应用了。如果需要更详细的信息,看javadoc文档吧。
最后的说明:ProcessBuilder这个1.5新增的类也可以完成同样的任务,Runtime就是调用了这个类。
来源:https://blog.51cto.com/u_5454003/6130533
标签:java调用外部程序
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android仿微信Viewpager-Fragment惰性加载(lazy-loading)
2023-12-16 23:50:59
![](https://img.aspxhome.com/file/2023/9/108269_0s.gif)
Android Handler 机制实现原理分析
2022-01-14 23:46:49
![](https://img.aspxhome.com/file/2023/1/91041_0s.jpg)
Spring项目中使用Junit单元测试并配置数据源的操作
2022-06-02 05:32:27
Android模块化中数据传递/路由跳转实现示例
2023-06-29 03:12:06
Spring框架初始化解析
2021-06-09 16:46:59
Android输入法弹出时覆盖输入框问题的解决方法
2023-02-06 06:36:52
Android开发返回键明暗点击效果的实例代码
2022-06-08 06:39:27
![](https://img.aspxhome.com/file/2023/2/137802_0s.png)
java.math包下计算浮点数和整数的类的实例
2023-02-06 16:19:39
android中Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
2023-11-28 07:28:04
![](https://img.aspxhome.com/file/2023/3/137523_0s.png)
C#词法分析器之词法分析的使用详解
2022-01-26 04:22:13
![](https://img.aspxhome.com/file/2023/1/113721_0s.png)
UGUI实现图片拖拽功能
2021-06-27 18:26:24
![](https://img.aspxhome.com/file/2023/4/78134_0s.png)
C#中File类的文件操作方法详解
2022-10-04 01:25:28
mybatis查询语句揭秘之参数解析
2021-07-10 01:17:18
深入理解Java显式锁的相关知识
2022-06-16 09:59:41
C#+EmguCV使用摄像头读取、保存视频
2023-01-25 12:20:37
![](https://img.aspxhome.com/file/2023/5/125895_0s.jpg)
Mybatis核心组成部分之SQL映射文件揭秘详解
2023-08-22 18:45:21
Java数据结构与算法之单链表深入理解
2023-12-02 05:53:12
![](https://img.aspxhome.com/file/2023/3/128833_0s.png)
springboot @ConfigurationProperties和@PropertySource的区别
2023-06-12 07:18:14
![](https://img.aspxhome.com/file/2023/1/87191_0s.jpg)
C#判断某个软件是否已安装实现代码分享
2022-07-15 16:34:06
Java 实战项目之精美物流管理系统的实现流程
2023-10-30 19:53:46
![](https://img.aspxhome.com/file/2023/8/125248_0s.png)