Console Companions
forked from Project Abraxas
- Java 100%
| .vscode | ||
| gradle | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle.kts | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Project Console
Project Console은 Java 환경에서 콘솔 입출력(I/O)과 명령행 인자(CLI Arguments) 파싱을 쉽고 효율적으로 처리할 수 있도록 설계된 경량 유틸리티 라이브러리입니다.
Features
- 유연한 Args 파서:
-key=value,--key value,-flag등 표준적인 CLI 포맷을 지원하며, 계층 구조(dot-notation) 파싱을 지원합니다. - JSON 상호 변환: 파싱된 인자를 중첩된 JSON 구조로 변환하거나, JSON 문자열로부터 인자 객체를 생성할 수 있습니다.
- 직관적인 Console I/O:
System.out및Scanner를 래핑하여 타입별 입력 및 형식화된 출력을 간소화합니다. - 비동기 입력 및 타임아웃: 입력 대기 시간을 제한할 수 있는 타임아웃 기능을 제공합니다.
- SLF4J 스타일 포매팅:
{}플레이스홀더를 사용한 직관적인 문자열 포매팅을 지원합니다.
1. Console I/O
Console 클래스는 표준 입출력을 처리하기 위한 정적 메서드를 제공합니다.
import com.elex_project.console.Console;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
// 형식화된 출력 (SLF4J 스타일)
Console.writeLine("Hello, {}!", "World");
// 타입별 입력 처리 및 재시도 로직 포함
int age = Console.readInt("나이를 입력하세요:");
// 타임아웃이 있는 입력 처리
try {
String response = Console.readLine(5, TimeUnit.SECONDS);
Console.writeLine("입력값: {}", response);
} catch (TimeoutException e) {
Console.writeLine("입력 시간이 초과되었습니다.");
}
// 보안이 필요한 입력 (패스워드)
char[] password = Console.readPassword("비밀번호:");
Key Methods
writeLine(String format, Object... params): Formatted output using{}.readInt(),readDouble(),readBoolean(): Typed input reading.readPassword(): Secure password entry (works in real terminals).
Args
Parse String[] args from main method into an easy-to-use object.
Supported Formats
option-option--option-option:value-option=value--option=value-option value--option value
Example
public static void main(String... args) {
Args parsedArgs = Args.parse(args);
if (parsedArgs.has("verbose")) {
Console.writeLine("Verbose mode enabled.");
}
String msg = parsedArgs.get("message").orElse("Default Message");
Console.writeLine("Message: {}", msg);
}
라이선스
이 프로젝트는 Apache License 2.0에 따라 라이선스가 부여됩니다. 상세 내용은 LICENSE 파일을 참조하세요.
© 2026 Elex Co., Pte. All rights reserved.