java Runtime 很强,转了

 

转载自:http://hi.baidu.com/l3130y/blog/item/8e461b3b8c0a7eec14cecbc0.html

当要调用一个外部程序的时候,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   {


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 ");
}
}
}




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

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");可以成功;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值