Skip to content

Latest commit

 

History

History

jaehun

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Command Line Arguments

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]

Command Line Argument 구문 분석 라이브러리

빌더형(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

어노테이션형(Annotation style)

JCommander

Command Line 매개변수를 쉽게 구분 분석할 수 있는 Java 프레임워크. 필드에 어노테이션을 추가한다.

link:src/exam/exam05/Options.java[role=include]


link:src/exam/exam05/Exam05.java[role=include]