java Sort friends.txt
→ main 메소드에 friends.txt라는 문자열을 command line arguments로 전달한다.
- Command Line Argument
link:src/exam/Exam01.java[role=include]
java Exam01 NHN Academt Back-End
java Exam01 "NHN Academy Back-End"
-
공백 문자로 command line arguments를 구분하기 때문에 단일 인수로 해석하려면 따옴표로 묶어야 한다.
- Command Line Argument 숫자 구분하기
link:src/exam/Exam02.java[role=include]
-
NumberFormatException은 argument의 형식이 타입을 변환하기에 유효하지 않은 경우에 발생한다.
Command Line Argument 옵션 분석하기
link:src/quiz/Quiz01.java[role=include]
- 빌더형(Builder Style)
-
객체를 생성하고 Command Line에서 사용 가능한 Argument들을 객체에 추가 함으로써 필요한 Argument들의 묶음을 만든다.
- Apache Commons CLI
-
프로그램에 전달된 옵션을 구문 분석하기 위한 API를 제공한다.
-
Boolean Option
-
// create Options object
Options options = new Options();
// add t option
options.addOption("v", "version", false, "print the version");
// v, version -> 옵션
// print the version -> discription
-
Argument Option
Options options = new Options(); Option logfile = Option.builder("logfile") .argName("file") .hasArg() .desc("use given file for log") .build(); options.addOption(logfile);
Argument를 갖는 옵션은 Option 클래스의 빌더를 통해서 생성 가능.
- 명령줄 인수 구문 분석
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
- Boolean Option 확인하기
link:src/exam/Exam03.java[role=include]
실행 결과 - argument : -a -b -v
-a : a 옵션이 추가되어 있습니다.
-b : b 옵션이 추가되어 있습니다.
-v : print the version
- 옵션 값 가져오기
options.addOption("c", true, "국가 코드");
Hasarg의 값을 true로 한다면 argument값을 가질 수 있다.
link:src/quiz/Quiz02.java[role=include]
- Usage, Help
-
HelpFormatter Class를 통해 제공 가능하다.
HelpFormatter formatter = new Helpformatter();
formatter.printHelp("ls", options);
link:src/exam/Exam04.java[role=include]
usage: Exam04
-a Option a
-b Option b
-v,--version Version