[java] 유닉스/리눅스 시스템 호출을 사용하여 파일의 압축과 압축 해제를 수행하는 방법에 대해 알려주세요.

유닉스나 리눅스 시스템에서는 명령 줄을 통해 파일을 압축하거나 압축을 해제하는 기능을 제공합니다. 여기서는 Java에서 이러한 시스템 호출을 수행하는 방법을 알아봅니다.

1. 압축하기

파일을 압축하기 위해서는 압축 프로그램을 이용하여 시스템 호출을 수행해야 합니다. Java에서는 Runtime.getRuntime().exec() 메서드를 사용하여 이를 수행할 수 있습니다. 다음은 파일을 GZip으로 압축하는 예제 코드입니다.

import java.io.IOException;

public class FileCompression {
    public static void main(String[] args) {
        try {
            String command = "gzip sample.txt";
            Process process = Runtime.getRuntime().exec(command);
            process.waitFor();
            System.out.println("파일이 성공적으로 압축되었습니다.");
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 gzip 명령어를 사용하여 sample.txt 파일을 압축하고 있습니다.

2. 압축 해제하기

압축 해제도 압축하기와 동일한 방식으로 시스템 호출을 통해 수행할 수 있습니다. 예를 들어 GZip으로 압축된 파일을 해제하는 방법은 다음과 같습니다.

import java.io.IOException;

public class FileDecompression {
    public static void main(String[] args) {
        try {
            String command = "gzip -d sample.txt.gz";
            Process process = Runtime.getRuntime().exec(command);
            process.waitFor();
            System.out.println("파일이 성공적으로 압축 해제되었습니다.");
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 gzip -d 명령어를 사용하여 sample.txt.gz 파일을 압축 해제하고 있습니다.

결론

이렇게 Java에서는 유닉스/리눅스 시스템 호출을 사용하여 파일을 압축하고 압축을 해제할 수 있습니다. 하지만 시스템 호출을 수행할 때는 주의해야 하며, 사용자 입력에 의해 동적으로 명령어가 생성되는 경우 보안상의 이슈가 발생할 수 있으므로 신중하게 다루어져야 합니다.