我想在Java中将3个输入作为命令行参数:
inputFileLocation
configFileList
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
是inputFileLocation
,
a.conf,b.conf,c.conf
是带有configFileList
分隔符的,
D:/output
是outputFileLocation
。
答案 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
数组。
您有两种选择:
args
数组并手动将其拉开并自行处理每个元素。在这种情况下,您需要Arrays.asList(args[2].split(","));
第二个参数,以便根据需要将其转换为List<String>
。毋庸置疑,我更喜欢第二种选择,因为第一种选择只是脆弱的工作。
答案 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:/输出