91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Java中如何進行文件的壓縮與解壓縮

小樊
82
2024-10-27 07:18:02
欄目: 編程語言

在Java中,可以使用java.util.zip包中的類進行文件的壓縮和解壓縮。以下是一個簡單的示例,演示了如何使用這些類來壓縮和解壓縮文件:

壓縮文件

import java.io.*;
import java.util.zip.*;

public class ZipFileExample {
    public static void main(String[] args) {
        String inputDir = "path/to/input/directory";
        String zipFilePath = "path/to/output.zip";

        try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
            File dir = new File(inputDir);
            zipDirectory(dir, zos);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void zipDirectory(File dir, ZipOutputStream zos) throws IOException {
        if (!dir.isDirectory()) {
            throw new IllegalArgumentException("Input must be a directory");
        }

        for (File file : dir.listFiles()) {
            if (file.isDirectory()) {
                zipDirectory(file, zos);
            } else {
                try (FileInputStream fis = new FileInputStream(file);
                     ZipEntry ze = new ZipEntry(file.getName())) {
                    zos.putNextEntry(ze);

                    byte[] buffer = new byte[1024];
                    int length;
                    while ((length = fis.read(buffer)) > 0) {
                        zos.write(buffer, 0, length);
                    }

                    zos.closeEntry();
                }
            }
        }
    }
}

解壓縮文件

import java.io.*;
import java.util.zip.*;

public class UnzipFileExample {
    public static void main(String[] args) {
        String zipFilePath = "path/to/input.zip";
        String outputDir = "path/to/output/directory";

        try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFilePath))) {
            ZipEntry ze = zis.getNextEntry();
            while (ze != null) {
                String fileName = ze.getName();
                File newFile = new File(outputDir + File.separator + fileName);

                if (!ze.isDirectory()) {
                    try (FileOutputStream fos = new FileOutputStream(newFile);
                         BufferedOutputStream bos = new BufferedOutputStream(fos)) {
                        byte[] buffer = new byte[1024];
                        int length;
                        while ((length = zis.read(buffer)) > 0) {
                            bos.write(buffer, 0, length);
                        }
                    }
                } else {
                    new File(outputDir + File.separator + fileName).mkdirs();
                }

                ze = zis.getNextEntry();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

請注意,這些示例僅用于演示目的,并且假設輸入和輸出路徑是正確的。在實際應用中,您可能需要添加額外的錯誤處理和驗證。

0
绿春县| 阳朔县| 贺州市| 扶绥县| 横山县| 新巴尔虎左旗| 吉安市| 麟游县| 阳朔县| 无棣县| 绥滨县| 三原县| 利津县| 石嘴山市| 佛坪县| 龙南县| 临洮县| 汤阴县| 石柱| 垦利县| 永顺县| 富蕴县| 庐江县| 筠连县| 噶尔县| 长子县| 依安县| 昌邑市| 富顺县| 岚皋县| 织金县| 墨竹工卡县| 利津县| 潞城市| 高清| 宕昌县| 县级市| 堆龙德庆县| 宁武县| 南皮县| 得荣县|