大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 命令行参数(Command line argument)

在使用主控台启动一个Java程序时,我们可以一并指定一些参数,以让程序进行相对应的功能,例如:
$java 类名称 -compare a.java b.java

像这样的功能,您可以使用命令行参数(Command line argument)来达到,在我们撰写主程序时,会在参数列撰写String[] args,它就是用来接受一个参数指定的字符串数组,您只要使用索引取出args中的元素值,就可以取出程序运行时的参数,下面这个程序是个简单的示范:

  • CommandLineArg.java
public class CommandLineArg { 
public static void main(String[] args) {
System.out.print("读入的参数: ");
for(int i = 0; i < args.length; i++)
System.out.print(args[i] + " ");
System.out.println("");
}
}

执行结果:
$ java CommandLineArg -d /mnt/win_d/sample/
读入的参数: -d /mnt/win_d/sample/


args索引0的值是从程序名称后第一个参数开始,以空白为区隔依序储存在args数组中,当然,您可以使用 J2SE 5.0 的foreach来改写上面的程序:
  • CommandLineArg.java
public class CommandLineArg { 
public static void main(String[] args) {
System.out.print("读入的参数: ");
for(String arg : args)
System.out.print(arg + " ");
System.out.println();
}
}

接下来介绍一些处理命令行参数的技巧,由于命令行参数是储存在数组中,取出这些参数的最好方式当然就是使用for循环,而我们通常使用一个前导字节, 例如'-'来指定参数的选项功能,由于arg是个字节数组,自然的您可以使用switch来比对前导字节,例如:
for(String arg : args) {
    switch(arg.charAt(0)) {
        case '-':
            // 处理参数,执行选项,例如-o、-p、-r等等
        default:
            // 执行对应功能
    }
}

在判断执行选项的case中,您可以进一步检查第二个字节,例如:
switch(arg.charAt(1)) {
    case 'o':
        // 选项o的处理
        break;
    case 'p':
        // 选项p的处理
        break;
    case 'r':
        // 选项r的处理
        break;
    default:
        // 选项错误处理或其它处理
}

以上是命令行参数处理时的大致流程,当然不同的程序会有不同的处理方式,不过大致上不离以上的架构。