[java] 자바에서 압축 해제 후 파일의 권한 설정하기

압축 해제된 파일의 권한을 설정하는 것은 자바 프로그램에서 매우 중요한 작업입니다. 이 기능은 세부적인 보안과 파일 시스템 제어에 관련된 작업에서 사용됩니다. 여기에서는 java.util.zip 패키지를 사용하여 파일을 압축 해제하고, java.nio.file.attribute를 사용하여 파일의 권한을 설정하는 방법을 알아보겠습니다.

1. 압축 해제하기

import java.util.zip.*;
import java.io.*;

public class FileDecompression {
    public static void main(String[] args) {
        String zipFilePath = "example.zip";
        String destDirectory = "destination";

        try {
            File destDir = new File(destDirectory);
            if (!destDir.exists()) {
                destDir.mkdir();
            }
            ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
            ZipEntry entry = zipIn.getNextEntry();
            while (entry != null) {
                String filePath = destDirectory + File.separator + entry.getName();
                if (!entry.isDirectory()) {
                    extractFile(zipIn, filePath);
                } else {
                    File dir = new File(filePath);
                    dir.mkdir();
                }
                zipIn.closeEntry();
                entry = zipIn.getNextEntry();
            }
            zipIn.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        byte[] bytesIn = new byte[4096];
        int read = 0;
        while ((read = zipIn.read(bytesIn)) != -1) {
            bos.write(bytesIn, 0, read);
        }
        bos.close();
    }
}

2. 파일 권한 설정하기

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashSet;
import java.util.Set;

public class FilePermission {
    public static void main(String[] args) {
        String filePath = "destination/example.txt";
        Set<PosixFilePermission> perms = new HashSet<>();
        perms.add(PosixFilePermission.OWNER_READ);
        perms.add(PosixFilePermission.OWNER_WRITE);
        perms.add(PosixFilePermission.GROUP_READ);
        perms.add(PosixFilePermission.OTHERS_READ);

        try {
            Files.setPosixFilePermissions(Paths.get(filePath), perms);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 FilePermission 클래스는 java.nio.file.attribute.PosixFilePermission 클래스를 사용하여 파일의 권한을 설정하고 있습니다. 설정할 수 있는 권한에는 읽기, 쓰기 및 실행에 대한 옵션이 포함되어 있습니다.

이제 압축 해제 후 파일의 권한을 설정하기 위한 자바 프로그램을 작성하는 방법을 알아보았습니다. 이를 통해 파일 시스템 작업에 대한 보다 세밀한 제어가 가능해졌습니다.

참고 자료: