作者 主題: 如何取得在runtime,ProcessBuilder執行所印出的訊息??  (閱讀 4978 次)

0 會員 與 1 訪客 正在閱讀本文。

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
各位高手~~以下是我剛入門寫的程式,可是我用eclipse執行後,都沒有出現任何錯誤,並且有印出"CommandLineExec: Running [C:\windows\system32\cmd.exe, ipconfig]" , 可是為什麼看不到正常在command line所下的ipconfig的資訊呢???
import java.io.*;
import java.lang.String;
import java.lang.Runtime;
import java.util.ArrayList;
import java.util.List;
class test
{
public static void main(final String[] args) throws Exception
{
try{
   List cmdlist=new ArrayList();
   String[] cmd=new String[2];
   cmdlist.add("C:\\windows\\system32\\cmd.exe");
   cmdlist.add("ipconfig");
      Runtime t = Runtime.getRuntime();
    ProcessBuilder pb = new ProcessBuilder(cmdlist);
    Process p = pb.start();
      new ProcessBuilder(cmdlist).start();
    System.out.println("CommandLineExec: Running "+cmdlist);
 }
catch(final IOException ioe){}

}
}
« 上次編輯: 2009-08-18 15:27 由 pinky »

flylinux

  • 訪客
阿琪參考了這一篇When Runtime.exec() won't,試做了下面的程式:
import java.util.*;
import java.io.*;
class StreamGobbler extends Thread
{
    InputStream is;
    String type;
    
    StreamGobbler(InputStream is, String type)
    {
        this.is = is;
        this.type = type;
    }
    
    public void run()
    {
        try
        {
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line=null;
            while ( (line = br.readLine()) != null)
                System.out.println(type + ">" + line);    
            } catch (IOException ioe)
              {
                ioe.printStackTrace();  
              }
    }
}
class Test
{
public static void main(final String[] args) throws Exception
{
try{
  
   String[] cmd=new String[3];
   cmd[0]= "C:\\windows\\system32\\cmd.exe";
   cmd[1] = "/C";
   cmd[2]= "ipconfig";
   Runtime t = Runtime.getRuntime();
   Process proc = t.exec(cmd);
   // any output?
   StreamGobbler outputGobbler = new
       StreamGobbler(proc.getInputStream(), "OUTPUT");
   outputGobbler.start();
    
    
 }
catch(final IOException ioe){}

}
}
不知道是不是你要的?
« 上次編輯: 2009-09-08 16:55 由 slime »