概述
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[]);
}
*******/
最后
以上就是激情自行车为你收集整理的java 进程 输入 重定向_java I/O进程控制,重定向 演示样例代码的全部内容,希望文章能够帮你解决java 进程 输入 重定向_java I/O进程控制,重定向 演示样例代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复