[java] 자바에서 압축 해제 후 파일의 소유자 및 그룹 설정하기

아래는 파일 압축 해제 후 소유자 및 그룹을 설정하는 예제 코드입니다.

우선, 압축 파일을 해제한 후 파일의 소유자 및 그룹을 설정하기 위해 다음과 같이 ZipFileZipEntry 클래스를 사용할 수 있습니다.

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class FileDecompressionExample {
    public static void main(String[] args) throws IOException {
        String zipFilePath = "path_to_your_zip_file.zip";
        String destDirectory = "path_to_dest_directory";

        try (ZipFile zipFile = new ZipFile(zipFilePath)) {
            zipFile.stream()
                   .forEach(zipEntry -> {
                       try {
                           File file = new File(destDirectory, zipEntry.getName());
                           if (zipEntry.isDirectory()) {
                               file.mkdirs();
                           } else {
                               try (InputStream input = zipFile.getInputStream(zipEntry);
                                    FileOutputStream output = new FileOutputStream(file)) {
                                   byte[] buffer = new byte[1024];
                                   int bytesRead;
                                   while ((bytesRead = input.read(buffer)) > 0) {
                                       output.write(buffer, 0, bytesRead);
                                   }
                               }
                               // Set file permissions or ownership here
                               if (Files.exists(file.toPath())) {
                                   Set<PosixFilePermission> perms = Files.getPosixFilePermissions(file.toPath());
                                   perms.add(PosixFilePermission.OWNER_READ);
                                   perms.add(PosixFilePermission.OWNER_WRITE);
                                   Files.setPosixFilePermissions(file.toPath(), perms);
                                   Files.setOwner(file.toPath(), // set owner here);
                                   Files.setAttribute(file.toPath(), "posix:group", // set group here);
                               }
                           }
                       } catch (IOException e) {
                           e.printStackTrace();
                       }
                   });
        }
    }
}

위 코드에서 Files.setOwner 메서드를 사용하여 파일의 소유자를 설정하고, Files.setAttribute 메서드를 사용하여 파일의 그룹을 설정할 수 있습니다.

이 예제는 압축 파일을 해제하고 파일의 소유자 및 그룹을 설정하는 방법을 보여줍니다. 필요에 따라 실제 파일 소유자와 그룹을 설정하는 적절한 값으로 변경해야 합니다.

참고 문헌: