[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
을 사용하여 파일을 압축합니다.
참고 문헌: