2008年1月10日

取得由Java程式呼叫的外在程式的執行結果

http://eason982.blogspot.com/2008/01/java.html
每個application都會有一個Runtime類別的instance,讓你可以和執行時期的環境做互動。 你可以呼叫 getRuntime()來取得這個instance。
Runtime.exec()的參數指的是要執行的程式。Runtime.exec()會產生一個原生的process並 傳回一個 Process的子類別,可以用來控制或者取得這個原生process的資訊。這個process 既不使終端機介面,也不用命令列介面,而是將他的I/O操作都轉向到這三個串流: Process.getOutputStream(), Process.getInputStream(), Process.getErrorStream().

注意! 根據不同的底層作業平台,你可能會遇到一些停滯的狀況。有一些平台的I/O串流只有很小 的buffer,如果不能快速的對標準I/O串流做讀寫,則可能會發生停滯的狀況。


//獲得一個 XML 文件的解析器

public class ReadingProcess {
public static void main(String args[]){

//Provide a command as an input argument


Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(args[0]);

BufferedWriter buffOut = new BufferedWriter(
new OutputStreamWriter(
process.getOutputStream()));
BufferedReader buffIn = new BufferedReader(
new InputStreamReader(
process.getInputStream()));

buffOut.write("//Some String");
buffOut.flush();
//Ensure that the output reaches the process


String s;

if((s=buffIn.readLine())!= null)
System.out.println(s);

buffOut.close();
buffIn.close();
}
}


melbourne handyman
melbourne handyman Counter