关于java Runtime.getRunTime.exec(String command)的使用
2008-09-26 19:44当要调用一个外部程序的时候,java提供了exec方法,具体用法是:Runtime.getRunTime.exec("cmd /C Start mailto: abc@xxx.com").其中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 \\windows"); 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 offstart javaw xx运行jar:@echo offstart 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");可以成功 }