2012-07-11 46 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:/輸出

相關問題