java I/O进程控制,重定向 演示样例代码

java I/O进程控制,重定向 演示样例代码

package org.rui.io.util;

import java.io.*;
/**
 * 标准I/O重定向 
 */
public class Redircting {
	public static void main(String[] args) throws IOException {
		String path="D:\\Users\\liangrui\\workspace\\thinking\\src\\org\\rui\\io\\util/";
		PrintStream console=System.out;
		//输入
		BufferedInputStream in=new BufferedInputStream(
				new FileInputStream(path+"Redircting.java")
				);
		//输出
		PrintStream out=new PrintStream(
				new BufferedOutputStream(
						new FileOutputStream(path+"testf.out")
						)
				);
		//同意我们对标准输入输出  和错误IO流进行重定向
		System.setIn(in);
		//System.setOut(out);
		//System.setErr(out);
		
		//打印得定向的输入流
		BufferedReader  br=new BufferedReader(
				new InputStreamReader(System.in)
				);
		String s;
		
		while((s=br.readLine())!=null)
			System.out.println(s);
		out.close();// remember this!
		System.setOut(console);;
	}
	
}
/**
 * output:
 * 同上源代码
 */

package org.rui.io.util;

public class OSExecuteException  extends RuntimeException{
	public OSExecuteException(String why){super(why);}

}

package org.rui.io.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
 * 进程控制
 * 
 * 你常常会须要在java内部运行其他操作系统程序,而且要控制这此程序的输入和输出,java类库提供了运行这些操作的类
 * 
 * 为了捕获程序运行时产生的标准输出流,你须要调用getInputStream(),这是由于。。

。是我们能够从中读取信息的流。

* 从程序 中产生的结果每次输出一行,因此要使用readLine * */ public class OSExecuted { public static void command(String command) { boolean err=false; try { /**此类用于创建操作系统进程。 * 每一个 ProcessBuilder 实例管理一个进程属性集。

start() 方法利用这些属性创建一个新的 Process 实例。 * start() 方法能够从同一实例反复调用,以利用同样的或相关的属性创建新的子进程。 */ Process process=new ProcessBuilder(command.split(" ")).start(); //这里还能够返回它们,暂仅仅打印 BufferedReader br=new BufferedReader( new InputStreamReader( process.getInputStream() )); String s; while((s=br.readLine())!=null) System.out.println(s); //捕获错误流 BufferedReader b2=new BufferedReader( new InputStreamReader( process.getErrorStream() )); while((s=b2.readLine())!=null) { System.err.println("sssssssss:"+s); err=true; } } catch (Exception e) { System.out.println("command Ex =="+command); if(command.startsWith("CMD /C")) command("CMD /C"+command); else throw new RuntimeException(e); } if(err) throw new OSExecuteException(" Errors execting "+ command); } }


package org.rui.io.util;
/**
 * 以下展示了怎样使用OSExecute的演示样例
 * @author lenovo
 *
 */
public class OSExecuteDemo {
	public static void main(String[] args) {
		//javac org/rui/io/util/OSExecuteDemo.java
		String path="D:\\Users\\liangrui\\workspace\\thinking\\src\\org\\rui\\io\\util/";
		//path="";
		String commandw="javap "+path+"OSExecuteDemo.class";
		//System.out.println(commandw);
		OSExecuted.command(commandw);
	}

}
/************************output:
Compiled from "OSExecuteDemo.java"
public class org.rui.io.util.OSExecuteDemo {
// public org.rui.io.util.OSExecuteDemo();
//public static void main(java.lang.String[]);
}
 *******/


posted on 2019-04-08 21:47  xfgnongmin  阅读(221)  评论(0编辑  收藏  举报

导航