java 进程 输入 重定向_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[]);

}

*******/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值