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

[置顶] JavaSE学习笔记_14:Java-Runtime类

2016-04-06 21:32 525 查看
Runtime类
 
温馨提示:Runtime类在java.lang包中。
 
通过查找Runtime的描述,发现该类没有提供构造函数,说明不可以new对象,那么会直接想到该类中的方法都是静态的。发现该类中还有非静态方法,说明该类会提供静态方法获取本类对象。综上所述,该类使用了单例设计模式。
 
每个java应用程序都有一个Runtime类实例,使应用程序能够与其进行的环境相连接。该实例可以通过方法:static Runtime getRuntime();来获得,如:Runtime r=Runtime.getRuntime()。这个实例叫做当前运行时对象。
 
获取到当前运行时对象,我们就可以调用Runtime类中的一些方法,比如:Process exec(String command):在单独的进程中执行指定的字符串命令,。该方法接收的是一个可执行文件的路径,如打开扫雷:r.exec("c:\\winmime.exe");注意:
(1)想到如果路径不存在会出现什么情况呢,它会抛出异常,IOException,则它是有可能发生问题的程序,因此要try或在函数上申明。为了程序的简洁,避免导包,我们通常在函数上声明父异常Exception。
(2)如果他的路径在Classpath中配置过,则也可以将c:\\winmime.exe写成winmine.exe。
示例:
class RuntimeDemo
{
public static void main(String[] args)throws Exception
{
Runtime r=Runtime.getRuntime();
r.exec("F:\\QQ\\安装文件\\Bin\\QQScLauncher.exe");
}
}
运行结果如下图所示:
 


 
由上可知我们开启了一个进程,现在我们想关闭该进程,那么通过:
Process p=r.exec("F:\\QQ\\安装文件\\Bin\\QQScLauncher.exe");
p.destroy();
我们打开任务管理器,单击进程,我们几乎看不到qq界面的出现,因此效果不明显。所以我们可以:
Process p=r.exec("F:\\QQ\\安装文件\\Bin\\QQScLauncher.exe");
Thread.sleep(4000);
p.destroy();
这里需要注意的是,java杀不了windows中的原有进程,c/c++可以办到。
 
 
拓展:
(1)现在我们想打开一个记事本。代码如下:
class RuntimeDemo
{
public static void main(String[] args)throws Exception
{
Runtime r=Runtime.getRuntime();
r.exec("notepad.exe");
}
}
运行结果如下图所示:
 


 
(2)现在想打开记事本,记事本中的内容为指定内容。
代码如下:
class RuntimeDemo
{
public static void main(String[] args)throws Exception
{
Runtime r=Runtime.getRuntime();
r.exec("notepad.exe SystemDemo.java");
}
}
运行结果如下图所示:
 


ps:上述的代码中SystemDemo.java也可以是一个视频软件,这样记事本中全都是二进制。当然,我们也可以将notepad.exe换成视频播放器的路径,这样对应打开的就是一个视频。
 
 
 
 2015-12-15著
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: