2012-07-11 29 views
0

我想给3个输入作为命令行参数在Java命令行参数:列表<String>如在java中

  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:/inputinputFileLocationa.conf,b.conf,c.confconfigFileList,分离器,和 D:/outputoutputFileLocation

+3

Arrays.asList (configFileList.split(“,”))会给你列表。 – devang 2012-07-11 05:21:33

回答

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.

不用说,我更喜欢第二个选项,因为第一个只是脆弱的繁忙工作。

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:/输出

相关问题