1. 程式人生 > >java類中執行指令碼或命令(比如Linux下的指令碼命令等)

java類中執行指令碼或命令(比如Linux下的指令碼命令等)

可以使用java中的ProcessBuilder執行本地命令或指令碼等工作:
以下是一個簡單的使用java呼叫本地python指令碼的例子。從某工程程式碼中整理出來的,未封裝,僅供參考。

JAVA 程式碼:

  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.     thrownew IOException("failed to execute:" + processBuilder.command() + " with result:" + result);    
  27. else {    
  28.     return exit;    
  29. }    



附:

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

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