码迷,mamicode.com
首页 > 其他好文 > 详细

进程的使用

时间:2014-10-06 22:21:21      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:style   io   使用   ar   java   数据   sp   art   c   

在Java程序中可能需要调用底层操作系统上的其他程序,Java标准API提供了创建底层操作系统上运行的进程的能力,只需要传入正确的命令和相关的参数,就可以启动一个进程。在进程启动之后,可以从Java程序向进程提供输入数据,以及读取进程运行过程中产生的输出数据。对于在Java程序中启动其他进程这个任务来说,最重要的是输入和输出的处理。通常的做法是把Java程序的内部运行结果作为输入传递给一个新创建的进程,然后等待进程执行完成。在得到进程输出的运行结果之后,再继续下面的处理。通过这种方式,底层操作系统上的其他进程可以很好地与Java程序集成起来。

在Java7之前,对进程的输入和输出进行处理的方式比较有限,只支持管道式的方式。进程的输入对Java程序来说是一个输出流,程序向这个输出流中写入的数据会通过管道传递给进程。同样的,进程的输出对于java程序来说是一个输入流,通过读取此输入流的内容获得进程的输出。标准的创建新进程的过程是使用:java.lang.ProcessBuilder类来设置新进程的属性,然后通过start方法来启动进程的执行。ProcessBuilder类的start方法的返回值是一个表示进程的java.lang.Process类的对象。通过Process类的getOutputStream方法可以得到向进程写入数据的输出流,而通过getInputStream和getErrorStream方法可以分别得到包含进程正常执行和出错时输出内容的流入流。如下示例:

public void startProcessNormal() throws IOException {
    ProcessBuilder pb = new ProcessBuilder("cmd.exe","/c","netstat","-a");
    Process process = pb.start();
    InputStream input = process.getInputStream();
    Files.copy(input,Paths.get("netstat.txt"),StandardCopyOption.REPLACE_EXISTING);
}

使用管道的方式在某些情况下显得不够灵活,因此java7对进程的输入和输出

进程的使用

标签:style   io   使用   ar   java   数据   sp   art   c   

原文地址:http://my.oschina.net/fhd/blog/324524

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!