[java] 자바에서 압축 해제 후 파일의 소유자 및 그룹 설정하기
아래는 파일 압축 해제 후 소유자 및 그룹을 설정하는 예제 코드입니다.
우선, 압축 파일을 해제한 후 파일의 소유자 및 그룹을 설정하기 위해 다음과 같이 ZipFile
및 ZipEntry
클래스를 사용할 수 있습니다.
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
메서드를 사용하여 파일의 그룹을 설정할 수 있습니다.
이 예제는 압축 파일을 해제하고 파일의 소유자 및 그룹을 설정하는 방법을 보여줍니다. 필요에 따라 실제 파일 소유자와 그룹을 설정하는 적절한 값으로 변경해야 합니다.
참고 문헌: