在API文档中,Runtime类没有构造方法摘要,说明该类不能创建对象
发现还有非静态方法,说明该类应该提供静态的返回该类对象的方法.
而且只有一个,说明Runtime类使用了单列设计模式.
Runtime: 每个Java应用程序都有一个Runtime类的Runtime ,允许应用程序与运行应用程序的环境进行接口。 当前运行时可以从getRuntime方法获得。
Runtime 里面的一个方法exec(String cmdarray) 在单独的进程中执行指定的字符串命令。
例子:
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException{
Runtime r = Runtime.getRuntime();
r.exec("notepad.exe"); //exec要抛出异常或者捕捉异常
}
}
运行结果是打开了一个记事本
如果是要打开指定的记事本文件可以在r.exec("notepad.exe");
加一个空格,然后写出路径.
例子:
r.exec(“notepad.exe D:\\test\\data.ext”);
记得单斜杠是转义
, 双斜杠才是转义成斜杠
这下就打开了D盘下的test文件夹的data文本文件,如果这里没有,就会询问是否创建.
exec(String cmdarray) 方法的返回值是Process
所以可以把它放回到Process
的变量
我们可以使用Process
里面的方法
destroy() 杀死子进程。
例子:
Process p = r.exec("notepad.exe D:\\\test\\\data.txt");
p.destroy() ;
运行之后什么都没有发生…因为打开和杀进程太快了…
所以我们可以让进程停5秒.
同时可以选择捕捉或抛出异常,我们这里选择抛出
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException, InterruptedException {
Runtime r = Runtime.getRuntime();
Process p = r.exec("notepad.exe D:\\test\\data.txt"); //exec要抛出异常或者捕捉异常
Thread.sleep(5000);
p.destroy();
}
}
运行结果就是记事本打开5秒之后 才关闭…
其它Runtime方法,以及Process方法可以看着API玩一玩…