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

다음은 간단한 예시 코드입니다.

import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;

public class Main {
    public static void main(String[] args) {
        try {
            File zipFile = new File("example.zip");
            ZipFile zip = new ZipFile(zipFile);
            Path destDir = Paths.get("destinationDir");

            Files.createDirectories(destDir);

            zip.stream().forEach(entry -> {
                try {
                    Path filePath = destDir.resolve(entry.getName());
                    Files.copy(zip.getInputStream(entry), filePath, StandardCopyOption.REPLACE_EXISTING);

                    File file = filePath.toFile();
                    file.setLastModified(entry.getLastModifiedTime().toMillis());

                } catch (IOException e) {
                    e.printStackTrace();
                }
            });

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서는 ZipFile을 사용하여 압축 해제를 하고, Files.copy를 통해 파일을 복사한 후 setLastModified 메소드를 사용하여 수정 일자를 변경하고 있습니다.

해당 기능에 대한 자세한 정보는 아래 링크에서 참고하실 수 있습니다.

위의 방법으로 수정일자를 변경하는 것은 파일이 압축 해제된 이후에 이루어지는 점에 유의해야 합니다.