1、Process
process 是 java提供创建一个进程,并获取进程的信息的一个类,主要提供了
getInputStream() //获取输入信息
getErrorStream() //获取错误输出信息
getOutputStream() //获取输出信息
waitFor() // 等待子进程退出,也就是等待cpu的资源
2、RunTime
在jdk 1.0的时候,java 提供了RunTime来创建Process,并提供执行命令
比如,我要获取网卡的信息
public static void main(String[] args) throws IOException, InterruptedException { Process process = Runtime.getRuntime().exec("ipconfig"); //穿件进程 if(process.waitFor()!=0){ //等待进程启动 try (BufferedInputStream inputStream = new BufferedInputStream(process.getErrorStream())){ StringBuilder builder = new StringBuilder(); byte [] bytes = new byte[1024]; while (inputStream.read(bytes)!=0){ builder.append(new String(bytes)); } System.out.println("错误信息:"+builder.toString()); }catch (Exception e){ e.printStackTrace(); } } //获取进程执行命令ipconfig的信息 try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), Charset.forName("gbk")))){ String s = null; while ((s=reader.readLine())!=null){ System.out.println(s); } }catch (Exception e){ } }
该类提供了加载本地库,gc,获取内存信息
3、ProcessBulider
ProcessBulider 是jdk1.5提供的一个线程管理器,他比RunTime的功能更强大,可以获取到操作系统的系统变量,和改变工作目录
ProcessBuilder processBuilder = new ProcessBuilder("ipconfig"); Process process = processBuilder.start(); //用这样的方式创建进程
public Map<String,String> environment() //获取环境变量
public ProcessBuilder directory(File directory) //改变工作目录
4、System
这个类是jdk1.0的类,主要是提供获取系统的信息
这个类也提供了获取环境变量、加载库、gc等功能
但是这个类提供了一些其他我们常用的类,比如
public static String getProperty(String key, String def) //获取属性变量
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); //数组copy功能
比如,我们把Properties(本质上是个HashTable)文件的变量放入,要使用的时候在取出
File file = new File("C:\\Users\\ping\\IdeaProjects\\studyJava\\desc"); try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)))){ String s = null; while ((s=reader.readLine())!=null){ String [] kv = s.split("="); System.setProperty(kv[0],kv[1]); } }catch (Exception e){ e.printStackTrace(); } String value = System.getProperty("test"); System.out.println(value);