Java基础之调用系统命令或可执行程序
来源:互联网 发布:fake it till make it 编辑:程序博客网 时间:2024/05/16 02:21
一、运行一个可执行程序
执行一个.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 ./";
下面是我写的小例子:
- package com.why.RunTime;
- import java.io.BufferedInputStream;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- public class TestRunTime {
- public static void main(String[] args) {
- //windows
- // String cmd = "F:\\apache-tomcat-6.0.20.exe";
- // String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";
- // String cmd = "cmd.exe /c start F:\\test.doc";
- String cmd = "ping www.baidu.com";
- //linux
- // String cmd = "./fork_wait";
- // String cmd = "ls -l";
- // String[] cmd=new String[3];
- // cmd[0]="/bin/sh";
- // cmd[1]="-c";
- // cmd[2]="ls -l ./";
- Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象
- try {
- Process p = run.exec(cmd);// 启动另一个进程来执行命令
- BufferedInputStream in = new BufferedInputStream(p.getInputStream());
- BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
- String lineStr;
- while ((lineStr = inBr.readLine()) != null)
- //获得命令执行后在控制台的输出信息
- System.out.println(lineStr);// 打印输出信息
- //检查命令是否执行失败。
- if (p.waitFor() != 0) {
- if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束
- System.err.println("命令执行失败!");
- }
- inBr.close();
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- Java基础之调用系统命令或可执行程序
- JAVA调用系统命令或可执行程序
- JAVA调用系统命令或可执行程序
- JAVA调用系统命令或可执行程序
- JAVA调用系统命令或可执行程序
- JAVA调用系统命令或可执行程序
- Android调用另一个现成的可执行程序或系统命令
- 怎样在一个C 程序中调用另一个程序(独立可执行的程序, 或系统命令)?
- 程序中调用另一个现成的可执行程序或系统命令
- 命令或可执行程序
- Java:调用CMD命令打开文件或系统程序
- [开发技巧] Java调用可执行程序和批处理命令
- 利用Java调用可执行命令
- 利用Java调用可执行命令
- 利用Java调用可执行命令
- 利用Java调用可执行命令
- 利用Java调用可执行命令
- 利用Java调用可执行命令
- linux命令du和df
- [转]IBM AIX日常维护命令
- 【引用】文件中查找关键字“grep”命令
- bat删除空目录及子目录
- MyEclipse中提示信息常用设置
- Java基础之调用系统命令或可执行程序
- pflie 和spfile区别
- C语言复习笔记--static 全局变量和普通全局变量
- ZenCart paypal漏单解决方法二
- Android 内核打印Log
- 令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab
- Use java.net.HttpURLConnection/HttpClient 访问web service ( HTTP/HTTPS)
- SQL SERVER 存储过程的天然递归
- struts2的工作机制