[java] 자바에서 ZIP 파일 생성하기
ZIP 파일은 여러 파일이나 폴더를 하나의 압축된 파일로 만드는데 유용합니다. 자바에서는 java.util.zip
패키지를 사용하여 ZIP 파일을 생성할 수 있습니다.
1. ZipOutputStream 사용하기
java.util.zip.ZipOutputStream
클래스를 사용하여 ZIP 파일을 생성할 수 있습니다. 아래 예제는 ZipOutputStream
을 사용하여 파일을 ZIP으로 압축하는 방법을 보여줍니다.
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 ZipFileExample {
public static void main(String[] args) {
byte[] buffer = new byte[1024];
try {
FileOutputStream fos = new FileOutputStream("example.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
ZipEntry ze = new ZipEntry("example.txt");
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream("example.txt");
int len;
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
in.close();
zos.closeEntry();
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 코드는 example.txt
파일을 example.zip
으로 압축합니다. ZipEntry
클래스를 사용하여 각 파일을 ZIP 파일에 추가합니다.
2. 라이브러리 사용하기
자바에서는 Apache Commons Compress와 같은 라이브러리를 사용하여 ZIP 파일을 더 쉽게 처리할 수도 있습니다. 아래는 Apache Commons Compress를 사용한 예제입니다.
import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.compress.utils.IOUtils;
import java.io.*;
public class ZipFileExample {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("example.zip");
BufferedOutputStream bos = new BufferedOutputStream(fos);
ZipArchiveOutputStream zos = new ZipArchiveOutputStream(bos);
File file = new File("example.txt");
ArchiveEntry entry = new ZipArchiveEntry(file, "example.txt");
zos.putArchiveEntry(entry);
InputStream is = new FileInputStream(file);
IOUtils.copy(is, zos);
is.close();
zos.closeArchiveEntry();
zos.finish();
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache Commons Compress를 사용하면 더 간결하고 효율적인 방법으로 ZIP 파일을 생성할 수 있습니다.
결론
이 글에서는 자바에서 ZIP 파일을 생성하는 두 가지 방법을 살펴보았습니다. ZipOutputStream
클래스를 사용하는 방법과 Apache Commons Compress를 사용하는 방법입니다. 필요에 따라 적절한 방법을 선택하여 ZIP 파일을 생성할 수 있습니다.