您的位置:首页 > 编程语言 > Java开发

关于java Runtime.getRunTime.exec(String command)的使用

2013-08-11 10:57 393 查看


关于java Runtime.getRunTime.exec(String command)的使用

当要调用一个外部程序的时候,java提供了exec方法,具体用法是:Runtime.getRunTime.exec("cmd /C Start mailto: ").其中cmd /c是调用cmd下的start命令,它相当于对一个文件双击。也可以用Runtime.getRunTime.exec("c:\\EXCEl.exe d:\\a.xls")来打开D盘下的excel文件.

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

public class test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Runtime rn=Runtime.getRuntime();

Process p= null;

try {

//p = rn.exec( "cmd /k dir ");

p = rn.exec( "C:\\Windows\\system32\\notepad.exe f:\\gg.txt");

InputStream in =p.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(in));

String str = null;

while((str=br.readLine())!= null){

System.out.println(str);

}

br.close();

} catch (Exception e) {

System.out.println( "Error exec notepad ");

}

}

}

/*

public class Test {

/**

* @param args

* @throws IOException

* @throws InterruptedException

*/

/*public static void main(String[] args) throws IOException, InterruptedException

{

// TODO 自动生成方法存根

Process process = Runtime.getRuntime().exec("C:\\Program Files\\Microsoft Office\\Office12\\winword.exe f:\\gg.docx");

//process.waitFor( );cmd /c java f:\\T

/*String ls_1;

Process process = Runtime.getRuntime().exec("cmd /c dir ");

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

while ( (ls_1=bufferedReader.readLine()) != null)

System.out.println(ls_1); */

//C:\\Program Files\\Microsoft Office\\Office12\\winword.exe

// C:\Program Files\Microsoft Office\Office12\winword.exe

/*

process.waitFor( );

//process.destroy();

}

}*/

Process process = Runtime.getRuntime().exec("cmd /c del f:\\aaa.doc");

这样的调用是没有问题~

真正最正确的用BAT运行JAVA不显示DOS窗口(连闪一下都不闪)

今天写一个独立于RCP项目之外的SWT小工具,需要用批处理启动,偶写了一个批处理没闪DOS窗口,看得同事一愣一愣的。于是赶快把自己当年一点心得和大家分享下。

很多朋友在WINDOWS下会用批处理去启动自己的java程序,

一般的写法是

运行class:

java xx

运行jar:

java -jar xxx.jar

但是这样运行会有一个恶心的对话框停在那直到我们关闭程序。

于是很多人说可以这样

运行class:

start javaw xx

运行jar:

start javaw -jar xxx.jar

这种方法DOS窗口还是会一闪而过,这就算解决问题了吗?!网上很多人说是的.

对我们这种追求完美的人来说闪一下还是不能接受滴.

于是终极解决方案出现了!

那就是在批处理第一行加上@echo off

这样我们的批处理就变成了

运行class:

@echo off

start javaw xx

运行jar:

@echo off

start javaw -jar xxx.jar

快试试吧,绝对不闪了。哈哈哈。

解释一下

echo off

表示在此语句后所有运行的命令都不显示命令行本身

@ 表示运行时不显示本命令行

public class TestCmd {

public TestCmd() {

}

public static void main(String args[]) {

try {

// 登网站

Process process = Runtime.getRuntime().exec(

"cmd.exe /c start http://www.hao123.net/");

// 使用用Ping命令

Process ee = Runtime.getRuntime().exec(

"cmd.exe /c start ping 10.5.2.19");

} catch (Exception e) {

e.printStackTrace();

}

}

}

运行这个类你会看到效果

这个是运行了ping命令

我使用Process pc = Runtime.getRuntime().exec("cmd /c ping 127.0.0.1");可以成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: