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

后端 未结 2 1930
清酒与你
清酒与你 2021-01-23 19:39
  1. In Java, how do I execute a linux program with options, like this:

    ls -a (the option is -a),

    and another: ./myscript name=john age=2

相关标签:
2条回答
  • 2021-01-23 20:08

    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

    0 讨论(0)
  • 2021-01-23 20:15

    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());
    }
    
    0 讨论(0)
提交回复
热议问题