[java] 자바에서 디렉토리를 포함하여 파일 압축하기
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class FileCompressor {

    public static void main(String[] args) {
        String sourceDir = "원본 디렉토리 경로";
        String zipFile = "압축 파일 경로";

        File sourceDirectory = new File(sourceDir);
        
        try {
            FileOutputStream fos = new FileOutputStream(zipFile);
            ZipOutputStream zos = new ZipOutputStream(fos);
            zipDirectory(sourceDirectory, sourceDirectory.getName(), zos);
            zos.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void zipDirectory(File directory, String parent, ZipOutputStream zos) throws IOException {
        File[] files = directory.listFiles();
        byte[] buffer = new byte[1024];
        int length;
        for (File file : files) {
            if (file.isDirectory()) {
                zipDirectory(file, parent + File.separator + file.getName(), zos);
                continue;
            }
            FileInputStream fis = new FileInputStream(file);
            ZipEntry zipEntry = new ZipEntry(parent + File.separator + file.getName());
            zos.putNextEntry(zipEntry);
            while ((length = fis.read(buffer)) > 0) {
                zos.write(buffer, 0, length);
            }
            zos.closeEntry();
            fis.close();
        }
    }
}

위 예제는 FileCompressor 클래스를 사용하여 지정된 디렉토리를 압축파일로 만드는 방법을 보여줍니다. zipDirectory 메소드는 재귀적으로 디렉토리를 탐색하고 ZipOutputStream을 사용하여 파일을 압축합니다.

참고 문헌: