ShellCommand_Java代码中执行shell脚本_Process的输入、输出、异常流都需要关闭(2)
ShellCommand_Java代码中执行shell脚本_Process的输入、输出、错误流都需要关闭(2)
public static boolean execute(String shellFile) { //脚本文件为NULL或空值 if (null == shellFile || shellFile.equals("")) { logger.warn("ShellCommand shellFile is null."); return false; } if (logger.isDebugEnabled()) { logger.debug("bash " + shellFile); } try { Process process = Runtime.getRuntime().exec("bash " + shellFile); int iretCode = process.waitFor(); try { if (iretCode != 0) { BufferedReader br = new BufferedReader( new InputStreamReader(process.getErrorStream())); StringBuilder errorDesc = new StringBuilder(); for (String str = br.readLine(); str != null; str = br .readLine()) { errorDesc.append(str); } //zkf35483 新增关闭流操作 br.close(); logger.error("execute shell " + shellFile + " failed: " + errorDesc); } else { return true; } } catch (IOException e) { logger.error("IOException:", e); } finally { process.getErrorStream().close(); process.getInputStream().close(); process.getOutputStream().close(); } } catch (Exception e) { logger.error("Execute " + shellFile + " exception:", e); } return false; }