`
chemingliang
  • 浏览: 131056 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA调用系统命令或可执行程序【转】

    博客分类:
  • Java
 
阅读更多

通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过。基本原理是,首先通过 Runtime.getRuntime() 返回与当前 Java 应用程序相关的运行时对象,然后调用run.exec(cmd)  另启一个进程来执行命令(cmd为要执行的命令)。

 

一、运行一个可执行程序

    执行一个.exe的文件,或通过已安装的软件打开一个特定格式的文件,如word、chm或mp3等等。

1. 在window下可以直接执行一个.exe文件,如执行我在F盘下的tomcat安装文件,将命令写为:

    String cmd = "F:\\apache-tomcat-6.0.20.exe";

2. 打开一个word文档。如果系统已经安装了office应用程序,就可以通过调用word的可执行程序来打开一个word文档:

    String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";

    当然这样写有点麻烦,我们想打开一个word文档时只要双击就可以了,用不着去找WINWORD.EXE。要是打开每一种格式的文件都得去找它的可执行程序,那可累死了,我们可以通过下面的代码,打开任意一个已知格式的文件(只要安装的打开这种文件格式的软件),相当于用鼠标双击一个文件的图标:

    String cmd = "cmd.exe /c start F:\\test.doc";

 

    我用C写了一个进程操作的小例子,放在 linux 下编译出的可执行文件叫“fork_wait”,然后把我的java文件编译成TestRunTime.class后扔到 linux 上,在控制台执行 java TestRunTime 命令,TestRunTime 和 fork_wait 程序均运行成功。

    String cmd = "./fork_wait";

 

二、执行一个有标准输出的系统命令

    通过调用进程的 getInputStream() 方法,可以获得执行命令的标准输出。在 windows 的cmd控制台窗口和 linux 控制台执行系统名利的格式是一样的,只是输入的命令不同而已。

如要执行windows控制台中ping命令,可写为:String cmd = "ping www.baidu.com";

执行linux的ls命令,可写为:String cmd = "ls -l";

 

    如果要执行一个带参数的命令,可使用 String 数组形式,如:

    String[] cmd=new String[3];
    cmd[0]="/bin/sh";
    cmd[1]="-c";
    cmd[2]="ls -l ./";

 

JAVA 测试代码

  1. import java.io.BufferedInputStream;  
  2. import java.io.BufferedReader;  
  3. import java.io.InputStreamReader;  
  4.   
  5. public class TestRunTime {  
  6.     public static void main(String[] args) {  
  7.         //windows  
  8. //      String cmd = "F:\\apache-tomcat-6.0.20.exe";  
  9. //      String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";  
  10. //      String cmd = "cmd.exe /c start F:\\test.doc";  
  11.         String cmd = "ping www.baidu.com";  
  12.           
  13.         //linux  
  14. //      String cmd = "./fork_wait";  
  15. //      String cmd = "ls -l";  
  16. //      String[] cmd=new String[3];  
  17. //      cmd[0]="/bin/sh";  
  18. //      cmd[1]="-c";  
  19. //      cmd[2]="ls -l ./";  
  20.         Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象  
  21.         try {  
  22.             Process p = run.exec(cmd);// 启动另一个进程来执行命令  
  23.             BufferedInputStream in = new BufferedInputStream(p.getInputStream());  
  24.             BufferedReader inBr = new BufferedReader(new InputStreamReader(in));  
  25.             String lineStr;  
  26.             while ((lineStr = inBr.readLine()) != null)  
  27.                 //获得命令执行后在控制台的输出信息  
  28.                 System.out.println(lineStr);// 打印输出信息  
  29.             //检查命令是否执行失败。  
  30.             if (p.waitFor() != 0) {  
  31.                 if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束  
  32.                     System.err.println("命令执行失败!");  
  33.             }  
  34.             inBr.close();  
  35.             in.close();  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  
  40. }  

 

转自:http://wuhongyu.iteye.com/blog/461477/

分享到:
评论

相关推荐

    java调用windows命令

    JAVA如何调用WINDOWS命令行 用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令

    Java调用外部程序命令

    F:\Work\Study\功能点技术\java调用可执行文件\Java调用外部程序命令.doc

    java 程序都编译成执行文件jar命令详解

    如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样...所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性

    通过jar命令生成可执行的jar文件

    通过jar生成可执行的jar文件 将您要打包成jar的class文件放到D盘的temp目录下(也可以自定义) 在cmd命令行中键入如下指令: 1. 进入temp目录:cd tmep 2. 输入打包jar命令:jar -cvfe test.jar JFrameDemo3 . (点...

    换器也兼容其他多版本的JAVA程序,比如S40手机的JAVA程序

    【执行程序 Midp2Exe.exe】是一个DOS可执行文件,需要在DOS环境下执行,对没有DOS使用经验的人来说,操作起来会比较吃力。 【数据库文件 MidpRuntimeDLL.dll】是重要的主程序文件,执行程序就是调用这个文件来模拟...

    AdbShellCommand:在Android项目中执行adb Shell命令,通过java代码调用执行,采用MVP架构演示样例

    ##AdbShellCommand在Android项目中执行adb Shell命令,通过java代码调用执行,本程序采用MVP架构。###Java中执行adb shell命令本项目中,adb shell命令执行的实现方法主要参考网文()。文章中,把执行代码集成在...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    制作可执行的JAR文件包及jar命令详解

    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,...所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    实验指导1Java开发环境和Java程序结构.doc

    好的东西实验目的: ⑴掌握Java语言的基本原理。 ⑵掌握JDK开发工具的安装和配置。 ⑶通过简单的程序设计,了解Java程序的运行原理及基本结构。... ⑷了解常用的可执行程序的命令。 ⑸掌握eclipse的使用。

    java开发的企业内部通讯系统

    (7)在导入工程的src文件中,找到可执行的主类,在该类上单击鼠标右键,选择“运行方式”/“Java应用程序”项,如图1.3所示,完成程序配置 图1.3 选择菜单项 使用说明 系统介绍 企业内部通讯系统必须提供网络通讯...

    基于stm32、树莓派,后端使用Java的SpringBoot架构,以微信小程序作为用户控制端的智能家居控制系统,含完整源代码

    基于stm32、树莓派,后端使用Java的springboot架构,以微信小程序作为用户控制端的智能家居控制系统,含完整源代码 socketBOX:(运行在智能音箱上的socket程序) |-- client.h(客户端程序头文件) |-- client.c...

    java windows 计时工具

    1.执行文件,选择要让时启动的可执行程序。 如果是在系统的默认目录则可直接输入可执行名称。 如:cmd或cmd.exe 2.运行参数,应用程序运行所需的参数,如果没有则为空。 如/c ping 127.0.0.1 添加任务→...

    ansible-javax:Ansible模块,用于执行任意java类或jar

    使用命令或外壳模块在Ansible中运行基本Java应用程序非常容易且相对简单。 当您的应用程序需要各种选项(例如最大堆大小或线程堆栈)并且具有大量的类路径和系统属性都在命令行上定义时,事情很快就会变得复杂和...

    java语言与面向对象程序设计形考1-0001.docx

    试卷总分:100 单选题(共15题,共45分) 开始说明: 结束说明: 1.(3分) 安装好JDK后,在其bin目录下有许多exe可执行文件,其中"javac.exe"命令的作用是以下哪一种? A、Java文档制作工具 B、Java解释器 C、Java编译器...

    java开源包8

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包1

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包11

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包6

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

Global site tag (gtag.js) - Google Analytics