java虚拟机读写其它进程_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java虚拟机读写其它进程

java虚拟机读写其它进程

 2013/11/5 15:36:47  小骏向前冲  程序员俱乐部  我要评论(0)
  • 摘要:使用Runtime对象的exec()方法可以运行平台上的其他程序,该方法产生一个Process对象,Process对象代表由该Java程序启动的子进程。Process类提供了三个方法用于让程序和子进程进行通信。InputStreamgetErrorStream():获取子进程的错误流InputStreamgetInputStream():获取子进程的输入流OutputStreamgetOutputStream():获取子进程的输出流demo:publicclassWriteToProcess
  • 标签:Java 虚拟机
使用Runtime对象的exec()方法可以运行平台上的其他程序,该方法产生一个Process对象,Process对象代表由该Java程序启动的子进程。
Process类提供了三个方法用于让程序和子进程进行通信。
InputStream getErrorStream():获取子进程的错误
InputStream getInputStream():获取子进程的输入流
OutputStream getOutputStream():获取子进程的输出流


demo:
class="java">public class WriteToProcess {
	public static void main(String[] args) throws IOException {
		
	//运行java ReadStandard命令,返回运行该命令的子进程
		Process p = Runtime.getRuntime().exec("java ReadStandard");
		try {
			//以p进程的输出流创建PrintStream对象
			PrintStream ps = new PrintStream(p.getOutputStream());
	//		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	//		String st;
	//		while((st = br.readLine()) != null) {
	//			ps.println(st);
	//		}

			//将被写入到java ReadStandard程序的内容
			ps.println("Hello, 我是WriteProcess中的字符串");
			ps.println(new WriteToProcess());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

public class ReadStandard {
	public static void main(String[] args) {
		try {
			//获取标准输入,即之前WriteToProcess程序中被写入到输出流里的内容
			Scanner sc = new Scanner(System.in);
			PrintStream ps = new PrintStream(new FileOutputStream("out.txt"));
			{
				sc.useDelimiter("\n");
				while (sc.hasNext()) {
					ps.println("键盘输入的内容是:" + sc.next());
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


上面ReadStandard类中使用了Scanner获取标准输入,并提供main方法来执行,但我们不需要直接运行该类,而是通过运行WriteToProcess类来运行ReadStandard,在WriteToProcess中通过执行exec方法运行了java ReadStandard命令,该命令将会运行ReadStandard类,并返回运行该类的子进程,我们通过获取该子进程的输出流然后往里面写内容,这部分内容将作为ReadStandard类中标准输入获取的内容
(在运行WriteToProcess之前要先运行ReadStandard得到ReadStandard.class文件哦)
发表评论
用户名: 匿名