Re: [問題] 執行外部程式(ProcessBuilder)
另一個延申的問題,由於需執行的外部命令是在別的路徑,需要切換 working dir
因此查到在java5.0有一個class叫 ProcessBuilder,其中一個method叫
public ProcessBuilder directory(File directory)
Sets this process builder's working directory. Subprocesses subsequently
started by this object's start() method will use this as their working
directory
查了一些example, 應該就是我要的東西。
假設我的外部程式在 d:\test\app.exe
而code如下:
ProcessBuilder pb = new ProcessBuilder("app.exe");
pb.directory(new File("d:\\test\\)";
Process p = pb.start();
但結果卻是:
java.io.IOException: Cannot run program "app.exe" (in directory "d:\test\"):
CreateProcess error=2, The system cannot find the file specified
請問有版知道如何解嗎?謝謝。
修文:
後來發現在netbeans中可以從UI設working dir,在此例中將該值設為d:\test的確可行
不過我的問題是,working dir會常常變動,需要從API中設定,而不是由IDE控制…
為何使用Netbeans,從api中無法控制working dir...?有人有這樣的情況嗎?謝謝
修文2:
找到一個POST和我的問題一模一樣
http://forums.sun.com/thread.jspa?threadID=5125300&start=0&tstart=0
但最後好像也沒討論出什麼解法
※ 引述《Nt1 (用功點吧!)》之銘言:
: 大家好,假設我想執行 ipconfig 這個外部命令,並導向到另外一個檔案中。例如:
: c:\ipconfig >ip.txt
: 但我在程式碼中這樣寫:
: Process p = Runtime.getRuntime().exec("ipconfig >ip.txt");
: 為何這樣寫無法重新導向檔案呢?
: 一定要用 Process 的 outputstream 讀進來後再自己寫到檔案嗎?
: 這樣程式變的落落長@@,有變法直接用 OS 的 > 來做導向嗎?謝謝。
--
http://www.flickr.com/photos/mong0520/collections/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.30.33
→
09/07 02:20, , 1F
09/07 02:20, 1F
※ 編輯: Nt1 來自: 114.32.30.33 (09/07 02:44)
※ 編輯: Nt1 來自: 114.32.30.33 (09/07 03:02)