JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Languages on JVM » Groovy  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 執行外部程式練習
qrtt1





發文: 1747
積分: 31
於 2008-01-23 10:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
最近 server 轉換環境, 多了 linux 資源可以用.
而 groovy 能運用所有 java library 的資源, 加上 perl cpan 合起來用更加威力無比的 Big Smile
所以模仿了文章

When Runtime.exec() won't
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=3
所建議的執行外部程式的寫法, 以 Groovy 建立一個 Exec 類別

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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 result = Exec.doCommand('/home/duke/bin/isbn.pl 9780534939724  ');
 
println result
 


qrtt1 edited on 2008-01-23 10:56
reply to postreply to post
蝸牛角上爭何事?石火光中寄此身,隨富隨貧且歡樂,不開口笑是癡人。
my notes
話題樹型展開
人氣 標題 作者 字數 發文時間
2454 執行外部程式練習 qrtt1 1189 2008-01-23 10:54
» JWorld@TW »  Languages on JVM » Groovy

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8