zoukankan      html  css  js  c++  java
  • java代码调用exe(cmd命令)

    public class ShellCommand
    {
        public static void execCmd(String cmd, boolean wait)
        {
            execCmd(cmd, wait, null);
        }

        public static void execCmd(String cmd, boolean wait, StringBuilder output)
        {
            String[] cmds = new String[] { cmd };
            execCmds(cmds, null, null, wait, output);
        }

        public static void execCmds(String[] cmd, String dir, boolean wait,
                StringBuilder output)
        {
            execCmds(cmd, null, dir, wait, output);
        }

        public static void execCmds(String[] cmds, String[] env, String dir,
                boolean wait, StringBuilder output)
        {
            Process process = null;
            try {
                File dirFile = null;
                if (dir != null) {
                    dirFile = new File(dir);
                }
                for (String cmd : cmds) {
                    System.out.println(cmd);
                }
                if (cmds.length == 1) {
                    process = Runtime.getRuntime().exec(cmds[0], env, dirFile);
                } else {
                    process = Runtime.getRuntime().exec(cmds, env, dirFile);
                }
    //            logProcessOutput(process, cmds[0], output);

            } catch (Exception e) {
                String message = "executeCmd: " + cmds + " error: " + e.toString();
                if (output != null) {
                    output.append(message);
                }
            }
            if (process != null) {
                if (wait) {
                    try {
                        process.waitFor();
                        process.getOutputStream().close();
                        process.getErrorStream().close();
                        process.getInputStream().close();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        public static Process runProcess(String[] cmds, boolean root, String[] env,
                String dir, boolean wait, StringBuilder output)
        {
            Process process = null;
            try {
                File dirFile = null;
                if (dir != null) {
                    dirFile = new File(dir);
                }
                for (String cmd : cmds) {
                    System.out.println(cmd);
                }
                if (root) {
                    process = Runtime.getRuntime().exec("su");
                    DataOutputStream os = new DataOutputStream(
                            process.getOutputStream());
                    for (String cmd : cmds) {
                        os.writeBytes(cmd + " ");
                    }
                    os.flush();
                    // os.writeBytes("exit ");
                    os.close();
                } else {
                    if (cmds.length == 1) {
                        process = Runtime.getRuntime().exec(cmds[0], env, dirFile);
                    } else {
                        process = Runtime.getRuntime().exec(cmds, env, dirFile);
                    }
                }
            } catch (Exception e) {
                String message = "executeCmd: " + cmds + " error: " + e.toString();
                if (output != null) {
                    output.append(message);
                }
            }
            if (process != null) {
                if (wait) {
                    try {
                        process.waitFor();
                        process.getOutputStream().close();
                        process.getErrorStream().close();
                        process.getInputStream().close();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return process;
        }

    }

  • 相关阅读:
    Storm监控文件夹变化 统计文件单词数量
    Storm默认配置 default.yaml
    Storm集群搭建
    Storm概念
    zookeeper安装
    zookeeper
    zookeeper应用
    zookeeper应用
    zookeeper应用
    HDU 3473 Minimum Sum (划分树求区间第k大带求和)(转)
  • 原文地址:https://www.cnblogs.com/nickhan/p/4221811.html
Copyright © 2011-2022 走看看