有时候项目中需要知道所在环境(服务器)的状态,或者需要执行一些所在环境(服务器)的命令。Runtime是Java中用来与程序运行环境交互的类,可以通过这个类提供的接口来与底层交互。
比如获取当前服务器的网络状态:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SystemUtil {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec("netstat");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String str = "";
do{
str = bufferedReader.readLine();
System.out.println(str);
}while (str != null && str.length() > 0);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Rumtime在每个java应用中都是一个单例对象,只能通过getRuntime()方法来获取。
下面是一些Runtime类中的方法:
/**
* 在一个独立的进程中执行指定了环境或者工作目录和指定环境参数的命令。
* cmdarray:需要执行的命令
* envp:新开启的子进程的环境变量,name=value的字符串数组。如果为null表示继承当前进程
* 的环境变量
* dir:新开启的子进程的工作目录,如果为null表示继承当前进程的工作目录
*
*/
public Process exec(String[] cmdarray, String[] envp, File dir)
throws IOException {
return new ProcessBuilder(cmdarray)
.environment(envp)
.directory(dir)
.start();
}
其他的exec方法都是重载的上面的exec,是该exec的便捷方法。