java输入输出

来源:互联网 发布:爱快网络诊断dns未响应 编辑:程序博客网 时间:2024/04/19 20:11

黑马程序员_java虚拟机读写其他进程的数据---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a><a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

我们知道使用Runtime对象的exec方法可以运行平台上的其他程序,该方法产生一个Process对象,Process对象代表有该java程序启动的子进程,Process类提供了如下三个方法,用于让程序和其他子进程进行通信。

InputStream getErrorStream()获取子进程的错误流。

InputStream getInputStream():获取子进程的输入流。

OutputStream getOutputStream():获取子进程的输出流。

public class A

{

public static void main(String args[])

{

BufferedReader br=null;

try

{

Process p=Runtime.getRuntime(exec("javac");

br=new BufferedReader(new InputStreamReader(p.getErrorStream()));

String buff=null;

while(buff=br.readLine())!=null)

{

System.out.println(buff);

}

}

catch(IOException ex)

{

ex.printStackrace();

}

finally

{

try

{

if(br!=null)

br.close();

}

catch(IOException ex)

{

ex.printStackTrace();

}

}

}

}

上面程序中第一行红体字代码使用Runtime启动了javac程序,获得了运行改程序对应额子进程,第二行红体字代码以p进程的错误输入流创建了BufferedReader,这个输入流的流向如图所示

图所示的数据流对p进程javac而言,他是输出流;对当前程序而言,它是输入流。不仅如此,也可以通过ProcessgetOutputStream获得向进程输入数据的流,该流对java程序是输出流,对子进程则是输入数据。

Public class B

{

Public static void main(String args[])

{

PrintStream ps=null;

Try

{

Process p=Runtime.getRuntime().exec("java ReadStandard");

Ps=new PrintStream(p.getOutputStream());

Ps.println("普通字符串");

Ps.println(new WriteToProcess());

}catch(IOException ex)

{

ex.printStackTrace();

          }

Finally

{

If(ps !=null)

Ps.close();

}

}

}

Class C

{

Public static void main(String args[])

{

Scanner sc=new Scanner(System.in);

PrintStream ps=new PrintStream(new FileOutputStream("out.txt"));

sc.useDelimiter(" \n");

While(sc.hasNext())

{

Ps.println("键盘输入的内容是:"+sc.next());

}

Ps.close();

}

上面程序中的ReadStandard是一个使用Scanner获取标准输入的类,该类提供了main方法,可以被运行——但我们不打算直接运行该类,而是由\WriteToProcess类来运行ReadStandard类,在程序的第一行粗体字代码中,程序使用Runtimeexec方法运行了java ReadStandard 命令,该命令将运行ReadStandard类,并返回运行改程序的子进程。程序第二行红体字代码获得进程P的输出流——该输出流对进程p是输入流,只是对本程序是输出流,程序通过该输出流向进程p输出数据,这些数据将被ReadStandard类读到

运行上面的WriteToProcess类写入ReadStandard进程里,并由ReadStandard读取这些数据,并将这些数据保存到out.txt文件中。---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a><a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------