Java - execute a program with options, like ls -l

痞子三分冷 提交于 2019-12-02 05:44:24

You need to execute an external process, take a look at ProcessBuilder and just because it almost answers your question, Using ProcessBuilder to Make System Calls

UPDATED with Example

I ripped this straight from the list example and modified it so I could test on my PC and it runs fine

private static void copy(InputStream in, OutputStream out) throws IOException {
    while (true) {
        int c = in.read();
        if (c == -1) {
            break;
        }
        out.write((char) c);
    }
}

public static void main(String[] args) throws IOException, InterruptedException {

//        if (args.length == 0) {
//            System.out.println("You must supply at least one argument.");
//            return;
//        }

    args = new String[] {"cmd", "/c", "dir", "C:\\"};

    ProcessBuilder processBuilder = new ProcessBuilder(args);
    processBuilder.redirectErrorStream(true);

    Process process = processBuilder.start();
    copy(process.getInputStream(), System.out);
    process.waitFor();
    System.out.println("Exit Status : " + process.exitValue());
}

Apache Commons has a library built to handle this type of thing. I wish I knew about it before I coded something like this by hand. I found it later on. It takes options in various formats for a command line program.

Apache Commons CLI

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!