2011-01-14 28 views
20

Tôi đang sử dụng CLI của Apache Commons để xử lý các đối số dòng lệnh trong Java.Cách lấy thông số khi sử dụng thư viện CLI của Apache Commons

Tôi đã khai báo các tùy chọn ab và tôi có thể truy cập giá trị bằng cách sử dụng CommandLine.getOptionValue().

Usage: myapp [OPTION] [DIRECTORY] 

Options: 
-a  Option A 
-b  Option B 

Làm cách nào để khai báo và truy cập biến DIRECTORY?

+0

Làm thế nào mà bạn thực hiện 'HelpFormatter' in '[OPTION] [DIRECTORY]'? –

Trả lời

29

Sử dụng các phương pháp sau đây:

CommandLine.getArgList() 

trả về bất cứ điều gì còn lại sau khi lựa chọn đã được xử lý.

+0

nếu số lượng đối số cho tất cả các tùy chọn là không giới hạn thì sao? – Zangdak

6

Tốt hơn nên sử dụng Tùy chọn (-d) khác để xác định thư mục trực quan hơn với người dùng.

Hoặc mã dưới đây trình bày nhận được danh sách đối số còn lại

public static void main(final String[] args) { 
    final CommandLineParser parser = new BasicParser(); 
    final Options options = new Options(); 
    options.addOption("a", "opta", true, "Option A"); 
    options.addOption("b", "optb", true, "Option B"); 

    final CommandLine commandLine = parser.parse(options, args); 

    final String optionA = getOption('a', commandLine); 
    final String optionB = getOption('b', commandLine); 

    final String[] remainingArguments = commandLine.getArgs(); 

    System.out.println(String.format("OptionA: %s, OptionB: %s", optionA, optionB)); 
    System.out.println("Remaining arguments: " + Arrays.toString(remainingArguments)); 
} 

public static String getOption(final char option, final CommandLine commandLine) { 

    if (commandLine.hasOption(option)) { 
     return commandLine.getOptionValue(option); 
    } 

    return StringUtils.EMPTY; 
} 
+1

Để làm điều đó, tôi muốn thêm rằng HelpFormatter sẽ được sử dụng để in đối số [DIRECTORY]: 'HelpFormatter formatter = new HelpFormatter();' 'formatter.printHelp (" myapp [OPTION] [DIRECTORY] ", tùy chọn); ' – Blazes

Các vấn đề liên quan