在Java中,可以使用java.util.zip
包中的類來實現多個文件的壓縮。以下是一個簡單的示例,演示如何將多個文件壓縮成一個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 ZipMultipleFiles {
public static void main(String[] args) {
// 要壓縮的文件列表
String[] filesToZip = {"file1.txt", "file2.txt", "file3.txt"};
// 壓縮后的ZIP文件名
String zipFileName = "compressedFiles.zip";
try {
// 創建一個ZIP文件輸出流
FileOutputStream fos = new FileOutputStream(zipFileName);
// 創建一個ZIP輸出流
ZipOutputStream zos = new ZipOutputStream(fos);
// 遍歷要壓縮的文件列表
for (String filePath : filesToZip) {
// 創建一個File對象
File file = new File(filePath);
// 如果文件不存在,跳過
if (!file.exists()) {
System.out.println("文件不存在: " + filePath);
continue;
}
// 創建一個ZIP條目
ZipEntry zipEntry = new ZipEntry(file.getName());
// 將ZIP條目添加到ZIP輸出流
zos.putNextEntry(zipEntry);
// 創建一個文件輸入流
FileInputStream fis = new FileInputStream(file);
// 讀取文件內容并寫入ZIP輸出流
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
zos.write(buffer, 0, bytesRead);
}
// 關閉文件輸入流
fis.close();
// 移除ZIP條目
zos.removeEntry();
}
// 關閉ZIP輸出流和文件輸出流
zos.close();
fos.close();
System.out.println("文件已成功壓縮到: " + zipFileName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
這個示例中,我們首先創建了一個FileOutputStream
對象,用于寫入ZIP文件。然后,我們創建了一個ZipOutputStream
對象,用于將文件添加到ZIP文件中。接下來,我們遍歷要壓縮的文件列表,為每個文件創建一個ZipEntry
對象,并將其添加到ZIP輸出流中。我們使用FileInputStream
讀取文件內容,并將其寫入ZIP輸出流。最后,我們關閉所有流以完成壓縮操作。