• 使用Java解压和压缩文件


    目录

    一、压缩文件

    二、解压文件 


    在Java中,你可以使用java.util.zip包来实现解压和压缩文件。这个包提供了对ZIP格式的文件进行压缩和解压的功能。

    一、压缩文件

    ZipOutputStream 是 Java 中用于创建 ZIP 文件的类。它是 java.util.zip 包中的一部分,允许你将多个文件或目录压缩到单个 ZIP 文件中。

    1. 创建 ZipOutputStream: 要创建 ZipOutputStream 对象,你需要将其与一个输出流(通常是 FileOutputStream)关联,以便将压缩数据写入文件

      1. FileOutputStream fos = new FileOutputStream("compressed.zip");
      2. ZipOutputStream zipOut = new ZipOutputStream(fos);
    2. 添加 ZIP 条目: 使用 putNextEntry 方法来添加一个新的 ZIP 条目(文件或目录)。你需要指定条目的名称,它可以是文件名或相对路径。

      1. ZipEntry zipEntry = new ZipEntry("file.txt");
      2. zipOut.putNextEntry(zipEntry);
    3. 写入数据: 使用 write 方法来将数据写入 ZIP 条目。你可以循环从文件或其他数据源中读取数据,并将其写入 ZipOutputStream

      1. byte[] buffer = new byte[1024];
      2. int length;
      3. while ((length = inputStream.read(buffer)) >= 0) {
      4. zipOut.write(buffer, 0, length);
      5. }
    4. 关闭 ZIP 条目: 当完成写入 ZIP 条目的数据后,必须使用 closeEntry 方法来关闭条目。

      zipOut.closeEntry();
    5. 关闭 ZipOutputStream: 当所有 ZIP 条目都已添加和关闭后,需要关闭 ZipOutputStream

      zipOut.close();
    6. ZIP 条目属性: ZipEntry 对象允许你设置各种属性,如文件的修改时间、权限等。

      1. ZipEntry zipEntry = new ZipEntry("file.txt");
      2. zipEntry.setTime(file.lastModified());
      3. zipEntry.setSize(file.length());
      4. zipEntry.setMethod(ZipEntry.STORED);
    7. 压缩方法: ZipOutputStream 支持不同的压缩方法,可以根据需要设置。默认情况下,使用标准的 DEFLATED 压缩方法。

    8. 异常处理: 要注意处理可能的异常,例如文件不存在、权限问题等。确保正确关闭流以释放资源。

     压缩文件示例如下:

    1. import java.io.*;
    2. import java.util.zip.ZipEntry;
    3. import java.util.zip.ZipOutputStream;
    4. public class FileCompression {
    5. public static void main(String[] args) {
    6. String sourceFile = "source.txt"; // 要压缩的文件
    7. String compressedFile = "compressed.zip"; // 压缩后的文件
    8. try {
    9. FileOutputStream fos = new FileOutputStream(compressedFile);
    10. ZipOutputStream zipOut = new ZipOutputStream(fos);
    11. File fileToZip = new File(sourceFile);
    12. FileInputStream fis = new FileInputStream(fileToZip);
    13. ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
    14. zipOut.putNextEntry(zipEntry);
    15. byte[] bytes = new byte[1024];
    16. int length;
    17. while ((length = fis.read(bytes)) >= 0) {
    18. zipOut.write(bytes, 0, length);
    19. }
    20. fis.close();
    21. zipOut.close();
    22. fos.close();
    23. System.out.println("文件压缩完成:" + compressedFile);
    24. } catch (IOException e) {
    25. e.printStackTrace();
    26. }
    27. }
    28. }

    上述示例中,我们使用ZipOutputStream将文件source.txt压缩为compressed.zip

    二、解压文件 

    ZipInputStream 是 Java 中用于解压缩 ZIP 文件的类。它是 java.util.zip 包中的一部分,允许你从 ZIP 文件中读取数据。

    1. 创建 ZipOutputStream: 要创建 ZipOutputStream 对象,你需要将其与一个输出流(通常是 FileOutputStream)关联,以便将压缩数据写入文件。

      1. FileOutputStream fos = new FileOutputStream("compressed.zip");
      2. ZipOutputStream zipOut = new ZipOutputStream(fos);
    2. 添加 ZIP 条目: 使用 putNextEntry 方法来添加一个新的 ZIP 条目(文件或目录)。你需要指定条目的名称,它可以是文件名或相对路径。

      1. ZipEntry zipEntry = new ZipEntry("file.txt");
      2. zipOut.putNextEntry(zipEntry);
    3. 写入数据: 使用 write 方法来将数据写入 ZIP 条目。你可以循环从文件或其他数据源中读取数据,并将其写入 ZipOutputStream

      1. byte[] buffer = new byte[1024];
      2. int length;
      3. while ((length = inputStream.read(buffer)) >= 0) {
      4. zipOut.write(buffer, 0, length);
      5. }
    4. 关闭 ZIP 条目: 当完成写入 ZIP 条目的数据后,必须使用 closeEntry 方法来关闭条目。

      zipOut.closeEntry();
      
    5. 关闭 ZipOutputStream: 当所有 ZIP 条目都已添加和关闭后,需要关闭 ZipOutputStream

      zipOut.close();
      
    6. ZIP 条目属性: ZipEntry 对象允许你设置各种属性,如文件的修改时间、权限等。

      1. ZipEntry zipEntry = new ZipEntry("file.txt");
      2. zipEntry.setTime(file.lastModified());
      3. zipEntry.setSize(file.length());
      4. zipEntry.setMethod(ZipEntry.STORED);
    7. 压缩方法: ZipOutputStream 支持不同的压缩方法,可以根据需要设置。默认情况下,使用标准的 DEFLATED 压缩方法。

    8. 异常处理: 要注意处理可能的异常,例如文件不存在、权限问题等。确保正确关闭流以释放资源。

     

  • 相关阅读:
    SpringCloud学习一
    docker中odoo项目路径
    word 题目和选项保存到数据库(文件解析)
    关于燃气智慧场站标准化建设的思考
    嵌入式开发学习之--Git管理代码
    https安全性 带给im 消息加密的启发
    ElasticSearch快速入门实战
    算法ppt练习题(给黄成个大逼兜)
    Safari 浏览器 16.0 发布(含独立安装包下载)
    SQL优化问题的简述
  • 原文地址:https://blog.csdn.net/TreeShu321/article/details/133778690