[java] Jansi를 이용하여 자바 애플리케이션에서 터미널에서 디렉토리 이동하기

개발자들은 종종 자바 애플리케이션에서 터미널 명령어를 실행하고 그 결과를 가져와야 할 필요가 있습니다. 이러한 요구를 충족시키기 위해 Jansi 라이브러리를 사용하여 자바 애플리케이션에서 터미널에서 디렉토리를 이동하는 방법을 살펴보겠습니다.

Jansi란?

Jansi는 터미널 출력에 컬러와 스타일을 적용할 수 있는 자바 라이브러리입니다. 또한 Jansi를 사용하면 터미널 명령어를 실행하고 그 결과를 가져올 수 있습니다.

Jansi 설치

Jansi는 Maven 또는 Gradle과 같은 빌드 도구를 사용하여 손쉽게 프로젝트에 추가할 수 있습니다. 아래의 Maven 의존성 설정을 참고하세요.

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

Gradle을 사용하는 경우, 아래와 같이 의존성을 추가할 수 있습니다.

implementation 'org.fusesource.jansi:jansi:1.18'

디렉토리 이동 예제

다음은 Jansi를 사용하여 디렉토리를 이동하는 간단한 예제입니다.

import org.fusesource.jansi.AnsiConsole;

import java.io.IOException;

public class DirectoryNavigationExample {
    public static void main(String[] args) throws IOException {
        // 터미널의 색상 및 스타일 지원을 활성화합니다
        AnsiConsole.systemInstall();

        // 이동할 디렉토리 경로를 지정합니다
        String directoryPath = "/path/to/directory";

        // "cd <directoryPath>" 명령어를 실행합니다
        String command = String.format("cd %s", directoryPath);
        Process process = Runtime.getRuntime().exec(command);

        // 명령어 실행 결과를 출력합니다
        StreamGobbler outputGobbler = new StreamGobbler(process.getInputStream());
        outputGobbler.start();

        int exitCode;
        try {
            exitCode = process.waitFor();
        } catch (InterruptedException e) {
            exitCode = -1;
        }

        // 터미널 출력 색상 및 스타일을 복원합니다
        AnsiConsole.systemUninstall();

        if (exitCode == 0) {
            System.out.println("디렉토리 이동에 성공했습니다.");
        } else {
            System.out.println("디렉토리 이동에 실패했습니다.");
        }
    }

    private static class StreamGobbler extends Thread {
        private final InputStream inputStream;

        public StreamGobbler(InputStream inputStream) {
            this.inputStream = inputStream;
        }

        @Override
        public void run() {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

위 예제에서는 먼저 AnsiConsole.systemInstall()를 호출하여 터미널의 색상 및 스타일 지원을 활성화합니다. 그런 다음 “cd " 명령어를 실행하고 결과를 출력합니다. 마지막으로 `AnsiConsole.systemUninstall()`를 호출하여 터미널 출력 색상 및 스타일을 복원합니다.

이 예제를 실행하면 자바 애플리케이션이 터미널에서 지정한 디렉토리로 이동하고 이동 성공 여부를 출력합니다.

결론

Jansi를 사용하면 자바 애플리케이션에서 터미널 명령어를 실행하고 그 결과를 가져올 수 있습니다. 이를 통해 터미널에서 디렉토리를 이동하는 등 다양한 작업을 자바 애플리케이션에서 수행할 수 있습니다.

더 자세한 내용을 알아보려면 Jansi 공식 웹사이트를 방문해보세요.