ProcessBuilder

 

可以使用java中的ProcessBuilder執行本地命令或腳本等工作:

以下是一個簡單的使用java調用本地python腳本的例子。從某工程代碼中整理出來的,未封裝,僅供參考。

 
  1. List<String> commands=new ArrayList();  
  2. commands.add("python");  
  3. commands.add(pkg);  
  4. commands.add("--ad=test");  
  5. //...其它參數添加  
  6. processBuilder.command(commands);  
  7. processBuilder.directory(path);//切換工作目錄  
  8. processBuilder.redirectErrorStream(true);  
  9. Process process = processBuilder.start();  
  10. StringBuilder result = new StringBuilder();  
  11. final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));  
  12. try {  
  13.        String line;  
  14.        while ((line = reader.readLine()) != null) {  
  15.            result.append(line);  
  16.            LOGGER.info(processBuilder.command().toString() + " --->: " + line);  
  17.        }  
  18. catch (IOException e) {  
  19.        LOGGER.warn("failed to read output from process", e);  
  20. finally {  
  21.        IOUtils.closeQuietly(reader);  
  22. }  
  23. process.waitFor();  
  24. int exit = process.exitValue();  
  25. if (exit != 0) {  
  26.     throw new IOException("failed to execute:" + processBuilder.command() + " with result:" + result);  
  27. else {  
  28.     return exit;  
  29. }   

 

附:

在JavaSE5之前使用Runtime的exec方法執行本地命令.在JavaSE5之後,可以使用ProcessBuilder執行本地命令.

一篇不錯的介紹ProcessBuilder的文章:

http://www.cnblogs.com/taven/archive/2011/12/17/2291460.html

發佈了287 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章