[java] Jansi를 활용하여 자바에서 터미널에서 텍스트 삭제하기

시스템에서 자바로 작성된 CLI(Command Line Interface) 애플리케이션을 개발하다보면, 터미널에서 텍스트를 삭제하거나 초기화하는 기능이 필요할 수 있습니다. 이러한 작업을 수행하기 위해 Jansi 라이브러리를 활용할 수 있습니다. Jansi는 터미널에서 ANSI 제어 문자열을 처리하기 위한 자바 라이브러리입니다.

Jansi 라이브러리 추가하기

먼저, Maven이나 Gradle과 같은 의존성 관리 도구를 사용하여 프로젝트에 Jansi 라이브러리를 추가해야 합니다. 아래는 Maven 기반 프로젝트의 경우 pom.xml 파일에 추가해야할 내용입니다.

<dependencies>
    <dependency>
        <groupId>org.fusesource.jansi</groupId>
        <artifactId>jansi</artifactId>
        <version>1.18</version>
    </dependency>
</dependencies>

의존성을 추가한 후, 의존성을 다운로드하여 프로젝트에 적용해야 합니다.

터미널에서 텍스트 삭제하기

Jansi를 사용하여 터미널에서 텍스트를 삭제하려면, 아래의 코드를 참고할 수 있습니다.

import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.AnsiConsole;

public class TerminalTextEraser {
    public static void main(String[] args) {
        AnsiConsole.systemInstall();

        // 텍스트 출력
        System.out.print("Hello World!");

        // 커서를 역방향으로 이동하여 텍스트를 삭제
        System.out.print(Ansi.ansi().cursorBackward(12).eraseLine(Ansi.Erase.FORWARD));

        // 텍스트 출력
        System.out.print("Hello Jansi!");

        AnsiConsole.systemUninstall();
    }
}

위의 예제 코드에서는 AnsiConsole.systemInstall()AnsiConsole.systemUninstall() 메소드를 사용하여 Jansi를 초기화하고 제거합니다. 이를 통해 ANSI 제어 문자열을 터미널에 적용할 수 있습니다.

텍스트를 삭제하려면 Ansi.ansi().cursorBackward(12).eraseLine(Ansi.Erase.FORWARD) 코드를 사용하면 됩니다. cursorBackward(12)는 커서를 현재 위치에서 12칸 역방향으로 이동시킨다는 의미이며, eraseLine(Ansi.Erase.FORWARD)는 커서가 위치한 줄을 지우는 역할을 합니다. 이렇게 함으로써 이전에 출력한 텍스트는 지워지고, 새로운 텍스트를 출력할 수 있습니다.

Jansi를 사용하면 터미널에서 텍스트를 삭제하거나 초기화하는 기능을 간단하게 구현할 수 있습니다. 자바 CLI 애플리케이션을 개발하는 경우, 이러한 기능을 활용하여 사용자 인터페이스를 개선할 수 있습니다.

참고 자료