当前位置:首页 > Java

java 如何解压文件

2026-02-05 08:00:01Java

解压文件的方法

在Java中解压文件通常使用java.util.zip包或第三方库如Apache Commons Compress。以下是几种常见的方法:

使用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.ZipInputStream;

public class UnzipFile {
    public static void unzip(String zipFilePath, String destDirectory) throws IOException {
        File destDir = new File(destDirectory);
        if (!destDir.exists()) {
            destDir.mkdir();
        }
        try (ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath))) {
            ZipEntry entry = zipIn.getNextEntry();
            while (entry != null) {
                String filePath = destDirectory + File.separator + entry.getName();
                if (!entry.isDirectory()) {
                    extractFile(zipIn, filePath);
                } else {
                    File dir = new File(filePath);
                    dir.mkdir();
                }
                zipIn.closeEntry();
                entry = zipIn.getNextEntry();
            }
        }
    }

    private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
        try (FileOutputStream fos = new FileOutputStream(filePath)) {
            byte[] buffer = new byte[1024];
            int len;
            while ((len = zipIn.read(buffer)) > 0) {
                fos.write(buffer, 0, len);
            }
        }
    }
}

使用Apache Commons Compress解压多种格式文件

添加Maven依赖:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.21</version>
</dependency>

解压示例代码:

import org.apache.commons.compress.archivers.ArchiveException;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.utils.IOUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class UnzipWithCommons {
    public static void unzip(String zipFilePath, String destDirectory) throws IOException, ArchiveException {
        File destDir = new File(destDirectory);
        if (!destDir.exists()) {
            destDir.mkdir();
        }
        try (ArchiveInputStream ais = new ArchiveStreamFactory()
                .createArchiveInputStream(ArchiveStreamFactory.ZIP, new FileInputStream(zipFilePath))) {
            ZipArchiveEntry entry;
            while ((entry = (ZipArchiveEntry) ais.getNextEntry()) != null) {
                File outputFile = new File(destDir, entry.getName());
                if (entry.isDirectory()) {
                    outputFile.mkdirs();
                } else {
                    try (FileOutputStream fos = new FileOutputStream(outputFile)) {
                        IOUtils.copy(ais, fos);
                    }
                }
            }
        }
    }
}

注意事项

  • 解压前需检查目标目录是否存在,不存在时需创建
  • 处理大文件时注意内存使用,建议使用缓冲区
  • 解压过程中需处理可能出现的IO异常
  • 对于加密ZIP文件,需使用支持解密的库

以上方法提供了从基础到高级的解压方案,可根据项目需求选择合适的实现方式。

java 如何解压文件

标签: 文件java
分享给朋友:

相关文章

java如何创建线程

java如何创建线程

创建线程的方法 在Java中,创建线程主要有两种方式:继承Thread类和实现Runnable接口。以下是具体实现方法: 继承Thread类 通过继承Thread类并重写run()方法可以创建线程。…

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何运行

java如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件…

java如何输出

java如何输出

输出到控制台 使用 System.out.println() 方法输出内容到控制台,适用于调试或简单信息展示。 示例代码: System.out.println("Hello, World!")…

实现.vue文件

实现.vue文件

创建Vue单文件组件 Vue单文件组件(.vue文件)是Vue.js框架的核心特性之一,它将模板、脚本和样式封装在一个文件中。一个典型的.vue文件结构包含三个部分:<template>、…

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件…