将<string>列为java </string>中的命令行参数

时间:2012-07-11 05:19:03

标签: java command-line-arguments

我想在Java中将3个输入作为命令行参数:

  1. inputFileLocation
  2. configFileList
  3. outputFileLocation
  4. 但我无法理解如何将列表作为命令行争论。我试过这样的事情:

    public class BatchLauncher {
        public static void main(String[] args) {
            int argc = 0;
            String inputFileLocation = argc < args.length ? args[argc++] : null;
            String configFileList = argc < args.length ? args[argc++] : null;
            String outputFileLocation = argc < args.length ? args[argc++] : null;
            CaptureBatch captureBatch = new CaptureBatch();
            captureBatch.setInputFileLocation(inputFileLocation);
            captureBatch.setConfigFileList(configFileList);
            captureBatch.setOutputFileLocation(outputFileLocation);
        }
    }
    

    我在captureBatch.setConfigFileList(configFileList);收到编译时错误。

    输入将如下:

    D:/input a.conf,b.conf,c.conf D:/output
    

    其中D:/inputinputFileLocationa.conf,b.conf,c.conf是带有configFileList分隔符的, D:/outputoutputFileLocation

2 个答案:

答案 0 :(得分:1)

命令行参数汇总到Java中的String[]并传递到main未处理的。

public static void main(final String[] args) { // code }

根据D:/input a.conf,b.conf,c.conf D:/output的示例输入,args的值变为["D:/input", "a.conf,b.conf,c.conf", "D:/output"],其中[]分隔String数组。

您有两种选择:

  1. 手动解析此args数组并手动将其拉开并自行处理每个元素。在这种情况下,您需要Arrays.asList(args[2].split(","));第二个参数,以便根据需要将其转换为List<String>
  2. 使用类似JSAP ( Java Simple Argument Parser )的内容,让经过充分测试和成熟的库解析,验证并格式化输入。 Specifically it can parse the second argument you are passing in for you.
  3. 毋庸置疑,我更喜欢第二种选择,因为第一种选择只是脆弱的工作。

答案 1 :(得分:1)

public static void main(String[] args) {
    int argc = 0;
    if(args.length>2){
    String inputFileLocation = args[0];
    String configFileList = args[1];
    String outputFileLocation = args[2];

    List<String> lList=Arrays.asList(configFileList.split(","));
    System.out.println(inputFileLocation);
    System.out.println(lList);
    System.out.println(outputFileLocation);
    }
}

<强>输出:

d:/输入

[a.conf,b.conf,c.conf]

d:/输出