现在的位置: 首页 > 综合 > 正文

如何正确的使用groovy调用外部程序

2013年04月27日 ⁄ 综合 ⁄ 共 872字 ⁄ 字号 评论关闭
class StreamConsumer extends Thread{
    def inStream
    def buf
    public StreamConsumer(def input){
        inStream = input
        buf = new StringBuffer()
    }
 
    public void run(){
        def reader = new BufferedReader(new InputStreamReader(inStream))
        reader.eachLine{ buf.append(it).append('/n')}
    }
}
 
class Exec{
    static def doCommand(def cmd){
        Process proc = Runtime.getRuntime().exec(cmd)
        def error = new StreamConsumer(proc.getErrorStream())
        def input = new StreamConsumer(proc.getInputStream())
        input.start()
        error.start()
        proc.waitFor()
        input.join()
        error.join()
        return [
            "stdout":input.buf?.toString().trim(),
            "stderr":error.buf?.toString().trim(),
            ]
    }
}

def cmd = 'dir '
def result = Exec.doCommand(cmd);
println result

具体的解释请参考
When Runtime.exec() won't
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=3

抱歉!评论已关闭.