Re: [問題] 執行外部程式(ProcessBuilder)

看板java作者 (用功點吧!)時間15年前 (2010/09/07 01:15), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
另一個延申的問題,由於需執行的外部命令是在別的路徑,需要切換 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
後來發現好像是NetBeans限制了working dir, 在API中設的都無效
09/07 02:20, 1F
※ 編輯: Nt1 來自: 114.32.30.33 (09/07 02:44) ※ 編輯: Nt1 來自: 114.32.30.33 (09/07 03:02)
文章代碼(AID): #1CXI6in3 (java)