0

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

  1. inputFileLocation
  2. configFileList
  3. outputFileLocation

但我无法理解如何将列表作为命令行参数。我试过这样的事情:

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:/input是带分隔符的, 是.inputFileLocationa.conf,b.conf,c.confconfigFileList,D:/outputoutputFileLocation

4

2 回答 2

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>为您想要的 a。
  2. 使用JSAP(Java Simple Argument Parser)之类的东西,让一个经过良好测试且成熟的库为您解析、验证和格式化输入。具体来说,它可以解析您为您传递的第二个参数。

不用说,我更喜欢第二种选择,因为第一种只是脆弱的忙碌工作。

于 2012-07-11T05:21:59.370 回答
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:/输出

于 2012-07-11T05:39:40.277 回答