All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.panhongan.utils.process.CmdUtils Maven / Gradle / Ivy

package com.github.panhongan.utils.process;

import java.util.Collection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * execute command
 *
 * @author lalalu plus
 * @version 1.0
 * @since 2017.7.10
 */

public class CmdUtils {

    private static final Logger logger = LoggerFactory.getLogger(CmdUtils.class);

    /**
     * @param cmd Command lines
     * @param output Output for executing
     * @param err Error Information for executing
     * @return True if succeed. Else False
     */
    public static boolean exec(String[] cmd, Collection output, Collection err) {
        boolean ret = false;

        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(cmd);
            ret = readData(process, output, err);
        } catch (Exception e) {
            logger.warn(e.getMessage());
            err.add(e.getMessage());
        }

        return ret;
    }

    /**
     * @param process Process object
     * @param output Output for executing
     * @param err Error Information for executing
     * @return True if succeed. Else False
     */
    private static boolean readData(Process process,
                                    Collection output,
                                    Collection err) {
        boolean ret = false;

        try {
            ProcessDataReader outputReader = new ProcessDataReader(process.getInputStream(),
                    output);
            outputReader.start();

            ProcessDataReader errReader = new ProcessDataReader(process.getErrorStream(), err);
            errReader.start();

            outputReader.waitForCompletion();
            errReader.waitForCompletion();

            ret = (process.waitFor() == 0);
        } catch (Exception e) {
            logger.warn("", e);
        }

        return ret;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy