作者Nt1 (用功点吧!)
看板java
标题Re: [问题] 执行外部程式并重新导向的问题
时间Tue Sep 7 01:15:21 2010
另一个延申的问题,由於需执行的外部命令是在别的路径,需要切换 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
1F:→ Nt1:後来发现好像是NetBeans限制了working dir, 在API中设的都无效 09/07 02:20
※ 编辑: Nt1 来自: 114.32.30.33 (09/07 02:44)
※ 编辑: Nt1 来自: 114.32.30.33 (09/07 03:02)