[java] Jansi를 이용하여 자바 애플리케이션에서 터미널에서 파일 압축 풀기

소개

이 글에서는 Jansi 라이브러리를 사용하여 자바 애플리케이션에서 터미널에서 파일 압축을 풀어내는 방법에 대해 알아보겠습니다.

Jansi는 자바에서 ANSI 에스케이프 시퀀스를 처리하기 위한 라이브러리로, 터미널에서 색상, 스타일 등을 변경할 수 있게 해줍니다. 이 라이브러리를 사용하여 자바 애플리케이션에서 터미널에서 파일 압축을 풀려면 몇 가지 단계를 따라야 합니다.

Jansi 라이브러리 추가하기

먼저, 프로젝트의 의존성에 Jansi 라이브러리를 추가해야 합니다. Maven을 사용한다면, pom.xml 파일에 다음과 같이 의존성을 추가합니다:

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

Gradle을 사용한다면, build.gradle 파일에 다음을 추가합니다:

dependencies {
    implementation 'org.fusesource.jansi:jansi:1.18'
}

의존성을 추가한 후 프로젝트를 다시 빌드해야 합니다.

터미널에서 파일 압축 풀기

이제 Jansi를 사용하여 터미널에서 파일 압축을 풀어내는 기능을 구현해보겠습니다. 아래 예제 코드를 참고하여 진행해주세요.

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            System.out.println("압축을 풀 파일 경로를 입력하세요: ");
            String filePath = reader.readLine();

            String command = "tar xvf " + filePath; // 예시로 tar 압축을 풀기 위한 명령어 사용
            Process process = Runtime.getRuntime().exec(command);

            String line;
            BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            while ((line = errorReader.readLine()) != null) {
                AnsiConsole.out().println(Ansi.ansi().fgRed().a(line).reset());
            }

            BufferedReader outputReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            while ((line = outputReader.readLine()) != null) {
                AnsiConsole.out().println(Ansi.ansi().a(line).reset());
            }

            process.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        } finally {
            AnsiConsole.systemUninstall();
        }
    }
}

위의 코드에서는 tar 명령어를 사용하여 파일 압축을 풀어내는 예제입니다. 만약 다른 압축 형식을 사용하고 싶다면, command 변수에 해당 압축 형식에 맞는 명령어를 사용해야 합니다.

실행하기

코드를 컴파일하고, 생성된 클래스 파일을 실행해보세요. 터미널에서 압축을 풀 파일 경로를 입력하면, 해당 파일이 압축이 풀립니다. 압축을 풀다가 오류가 발생한 경우에는 빨간색으로 출력됩니다.

결론

Jansi를 사용하여 자바 애플리케이션에서 터미널에서 파일 압축을 풀어내는 방법에 대해 알아보았습니다. Jansi를 이용하면 터미널에서 색상, 스타일 등을 변경하는 것 외에도 다양한 기능을 구현할 수 있습니다. 자세한 내용은 Jansi의 공식 문서를 참조하시기 바랍니다.

참고 자료