概述
1.使用Runtime中exec(String command)方法执行cmd命令,如下:
Process p = Runtime.getRuntime().exec(cmd);
此方法会抛出IOException,但是在项目中遇到没有出现异常,命令也没有执行的情况。
2.此方法可以达到大多的cmd调用的期望结果,但有些时候回出现命令卡死在p.waitFor();上,造成线程阻塞,原因:https://blog.csdn.net/weixin_34408624/article/details/86015882
public static boolean runCMD(String cmd) throws IOException, InterruptedException { final String METHOD_NAME = "runCMD"; Process p = Runtime.getRuntime().exec(cmd); BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(p.getErrorStream())); String readLine = br.readLine(); StringBuilder builder = new StringBuilder(); while (readLine != null) { readLine = br.readLine(); builder.append(readLine); } logger.debug(METHOD_NAME + "#readLine: " + builder.toString()); p.waitFor(); int i = p.exitValue(); logger.info(METHOD_NAME + "#exitValue = " + i); if (i == 0) { return true; } else { return false; } } catch (IOException e) { logger.error(METHOD_NAME + "#ErrMsg=" + e.getMessage()); e.printStackTrace(); throw e; } finally { if (br != null) { br.close(); } } }
3.使用以下方法不会出现和2一样情况下得阻塞的问题,与2的区别就是获取流不同,将getErrorStream换成getInputStream就好了
public static boolean runCMD(String cmd) throws IOException, InterruptedException { final String METHOD_NAME = "runCMD"; // Process p = Runtime.getRuntime().exec("cmd.exe /C " + cmd); Process p = Runtime.getRuntime().exec(cmd); BufferedReader br = null; try { // br = new BufferedReader(new InputStreamReader(p.getErrorStream())); br = new BufferedReader(new InputStreamReader(p.getInputStream())); String readLine = br.readLine(); StringBuilder builder = new StringBuilder(); while (readLine != null) { readLine = br.readLine(); builder.append(readLine); } logger.debug(METHOD_NAME + "#readLine: " + builder.toString()); p.waitFor(); int i = p.exitValue(); logger.info(METHOD_NAME + "#exitValue = " + i); if (i == 0) { return true; } else { return false; } } catch (IOException e) { logger.error(METHOD_NAME + "#ErrMsg=" + e.getMessage()); e.printStackTrace(); throw e; } finally { if (br != null) { br.close(); } } }
转载于:https://www.cnblogs.com/wang-liang-blogs/p/11022869.html
最后
以上就是善良河马为你收集整理的java调用cmd命令的全部内容,希望文章能够帮你解决java调用cmd命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复