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调用外部程序
0
投稿

猜你喜欢

  • Android仿微信Viewpager-Fragment惰性加载(lazy-loading)

    2023-12-16 23:50:59
  • Android Handler 机制实现原理分析

    2022-01-14 23:46:49
  • 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
  • java.math包下计算浮点数和整数的类的实例

    2023-02-06 16:19:39
  • android中Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)

    2023-11-28 07:28:04
  • C#词法分析器之词法分析的使用详解

    2022-01-26 04:22:13
  • UGUI实现图片拖拽功能

    2021-06-27 18:26:24
  • 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
  • Mybatis核心组成部分之SQL映射文件揭秘详解

    2023-08-22 18:45:21
  • Java数据结构与算法之单链表深入理解

    2023-12-02 05:53:12
  • springboot @ConfigurationProperties和@PropertySource的区别

    2023-06-12 07:18:14
  • C#判断某个软件是否已安装实现代码分享

    2022-07-15 16:34:06
  • Java 实战项目之精美物流管理系统的实现流程

    2023-10-30 19:53:46
  • asp之家 软件编程 m.aspxhome.com