이 예제에서는 Jansi 라이브러리를 사용하여 자바에서 터미널 창에 프로그레스 바를 표시하는 방법을 살펴보겠습니다. Jansi는 터미널 창에서 ANSI 이스케이프 시퀀스를 사용하여 텍스트 색상, 배경 색상 및 커서 위치 등을 제어할 수 있게 해주는 라이브러리입니다.
Jansi 라이브러리 추가하기
먼저 Maven 또는 Gradle을 사용하여 Jansi 라이브러리를 추가해야 합니다. 아래의 Maven 및 Gradle 의존성 설정을 참고하세요.
Maven 의존성 설정
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>1.18</version>
</dependency>
Gradle 의존성 설정
dependencies {
implementation 'org.fusesource.jansi:jansi:1.18'
}
의존성을 추가한 후 프로젝트를 다시 빌드하십시오.
프로그레스 바 표시하기
이제 자바 코드에서 Jansi를 사용하여 터미널 창에 프로그레스 바를 표시해보겠습니다. 아래의 예제 코드를 참고하세요.
import org.fusesource.jansi.AnsiConsole;
public class ProgressBarExample {
public static void main(String[] args) {
AnsiConsole.systemInstall();
int totalSteps = 10;
for (int i = 0; i <= totalSteps; i++) {
printProgressBar(i, totalSteps);
// 잠시 대기
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
AnsiConsole.systemUninstall();
}
private static void printProgressBar(int currentStep, int totalSteps) {
StringBuilder progressBar = new StringBuilder();
int progressWidth = 50;
int filledWidth = (int) (((double) currentStep / totalSteps) * progressWidth);
progressBar.append("[");
for (int i = 0; i < progressWidth; i++) {
if (i < filledWidth) {
progressBar.append("=");
} else if (i == filledWidth) {
progressBar.append(">");
} else {
progressBar.append(" ");
}
}
progressBar.append("] ");
double progressPercentage = ((double) currentStep / totalSteps) * 100;
String progressText = String.format("%.2f%%", progressPercentage);
progressBar.append(progressText);
// Clear console
System.out.print("\033[H\033[2J");
System.out.flush();
// Print progress bar
System.out.print(progressBar.toString());
}
}
위의 예제 코드에서는 “org.fusesource.jansi.AnsiConsole”을 import 하고 AnsiConsole.systemInstall()
와 AnsiConsole.systemUninstall()
로 Jansi를 초기화 및 정리하는 작업을 수행합니다.
printProgressBar
메소드는 현재 단계와 총 단계를 인수로 받아서 프로그레스 바를 생성하는 역할을 합니다. currentStep
과 totalSteps
를 이용하여 프로그레스 바의 너비를 계산하고, 현재 단계의 백분율을 계산하여 출력합니다.
프로그레스 바를 표시하려면 System.out.print("\033[H\033[2J")
코드로 콘솔을 지우고, System.out.flush()
를 호출하여 버퍼를 비워야 합니다. 그런 다음 System.out.print(progressBar.toString())
로 프로그레스 바를 출력합니다.
프로그레스 바와 함께 Thread.sleep(500)
을 사용하여 각 단계 사이에 잠시 대기하도록 설정했습니다.
실행 결과
위의 예제 코드를 실행하면 터미널 창에 프로그레스 바가 표시됩니다. 단계가 증가함에 따라 바가 차오르는 것을 확인할 수 있습니다.
결론
이 예제에서는 Jansi 라이브러리를 사용하여 자바에서 터미널 창에서 프로그레스 바를 표시하는 방법을 알아보았습니다. Jansi를 사용하면 ANSI 이스케이프 시퀀스를 통해 터미널 창을 조작할 수 있으므로 텍스트 스타일링 및 터미널 UI 개발에 유용합니다.