Java压缩文件ZIP实例代码


以下是一个Java中压缩文件为ZIP格式的简单实例代码。这个例子使用了`java.util.zip`包中的`ZipOutputStream`类来实现文件的压缩。


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) {
        String sourceFolderPath = "/path/to/source/folder"; // 源文件夹路径
        String zipFilePath = "/path/to/destination/file.zip"; // 压缩文件保存路径

        zipFolder(sourceFolderPath, zipFilePath);
    }

    /**
     * 压缩文件夹
     *
     * @param sourceFolderPath 源文件夹路径
     * @param zipFilePath      压缩文件保存路径
     */
    public static void zipFolder(String sourceFolderPath, String zipFilePath) {
        File sourceFolder = new File(sourceFolderPath);
        File[] files = sourceFolder.listFiles();

        // 创建ZipOutputStream来写入压缩文件
        try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
            for (File file : files) {
                if (!file.isDirectory()) { // 只处理文件,不递归处理子文件夹
                    // 创建ZipEntry,并添加到zip输出流中
                    ZipEntry zipEntry = new ZipEntry(file.getName());
                    zipOut.putNextEntry(zipEntry);

                    // 读取文件内容并写入zip输出流
                    byte[] bytes = new byte[1024];
                    int length;
                    try (FileInputStream fis = new FileInputStream(file)) {
                        while ((length = fis.read(bytes)) >= 0) {
                            zipOut.write(bytes, 0, length);
                        }
                    }
                }
            }
            zipOut.closeEntry(); // 完成当前zip条目的添加
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

**注意**:这个示例仅压缩了源文件夹下的直接文件,而不递归地压缩子文件夹中的文件。如果你需要递归地压缩所有子文件夹中的文件,你需要在`zipFolder`方法中添加递归逻辑。

另外,请确保将`sourceFolderPath`和`zipFilePath`变量替换为实际的文件路径。