当前位置:实例文章 » JAVA Web实例» [文章]Java 多文件压缩与解压

Java 多文件压缩与解压

发布人:shili8 发布时间:2025-02-03 13:04 阅读次数:0

**Java 多文件压缩与解压**

在 Java 中,多文件压缩和解压是非常常见的需求。通过使用 Java 的 ZIP 和 JAR 库,我们可以轻松地实现对多个文件进行压缩和解压。

###1. 使用 ZIP 库进行压缩首先,让我们来看一下如何使用 ZIP 库进行压缩。ZIP 库是 Java 中用于处理 ZIP 文件的标准库。

#### **ZipUtil.java**

javaimport java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipUtil {
 public static void zipFiles(String srcDir, String destFile) throws Exception {
 // 创建 ZIP 输出流 FileOutputStream fos = new FileOutputStream(destFile);
 ZipOutputStream zos = new ZipOutputStream(fos);

 // 遍历源目录下的所有文件 File dir = new File(srcDir);
 addFilesToZip(dir, zos);

 // 关闭输出流 zos.close();
 }

 private static void addFilesToZip(File file, ZipOutputStream zos) throws Exception {
 if (file.isDirectory()) {
 // 如果是目录,则添加目录信息 File[] files = file.listFiles();
 for (File f : files) {
 addFilesToZip(f, zos);
 }
 } else {
 // 如果是文件,则添加到 ZIP 中 FileInputStream fis = new FileInputStream(file);
 ZipEntry entry = new ZipEntry(file.getName());
 zos.putNextEntry(entry);

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

 fis.close();
 }
 }
}


#### **使用示例**
javapublic class Main {
 public static void main(String[] args) throws Exception {
 // 源目录 String srcDir = "src";

 // 目标 ZIP 文件 String destFile = "example.zip";

 // 压缩源目录下的所有文件 ZipUtil.zipFiles(srcDir, destFile);

 System.out.println("压缩完成!");
 }
}


###2. 使用 JAR 库进行压缩除了使用 ZIP 库外,我们还可以使用 JAR 库对多个文件进行压缩。JAR 库是 Java 中用于处理 JAR 文件的标准库。

#### **JarUtil.java**
javaimport java.io.File;
import java.io.FileInputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;

public class JarUtil {
 public static void jarFiles(String srcDir, String destFile) throws Exception {
 // 创建 JAR 输出流 FileOutputStream fos = new FileOutputStream(destFile);
 JarOutputStream jos = new JarOutputStream(fos);

 // 遍历源目录下的所有文件 File dir = new File(srcDir);
 addFilesToJar(dir, jos);

 // 关闭输出流 jos.close();
 }

 private static void addFilesToJar(File file, JarOutputStream jos) throws Exception {
 if (file.isDirectory()) {
 // 如果是目录,则添加目录信息 File[] files = file.listFiles();
 for (File f : files) {
 addFilesToJar(f, jos);
 }
 } else {
 // 如果是文件,则添加到 JAR 中 FileInputStream fis = new FileInputStream(file);
 JarEntry entry = new JarEntry(file.getName());
 jos.putNextEntry(entry);

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

 fis.close();
 }
 }
}


#### **使用示例**
javapublic class Main {
 public static void main(String[] args) throws Exception {
 // 源目录 String srcDir = "src";

 // 目标 JAR 文件 String destFile = "example.jar";

 // 压缩源目录下的所有文件 JarUtil.jarFiles(srcDir, destFile);

 System.out.println("压缩完成!");
 }
}


###3. 使用 Apache Commons Compress 库进行压缩除了使用 Java 的 ZIP 和 JAR 库外,我们还可以使用 Apache Commons Compress 库对多个文件进行压缩。

#### **CompressUtil.java**
javaimport org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
import org.apache.commons.compress.utils.IOUtils;

public class CompressUtil {
 public static void compressFiles(String srcDir, String destFile) throws Exception {
 // 创建压缩输出流 TarArchiveOutputStream taos = new TarArchiveOutputStream(new FileOutputStream(destFile));

 // 遍历源目录下的所有文件 File dir = new File(srcDir);
 addFilesToCompress(dir, taos);

 // 关闭输出流 taos.close();
 }

 private static void addFilesToCompress(File file, TarArchiveOutputStream taos) throws Exception {
 if (file.isDirectory()) {
 // 如果是目录,则添加目录信息 File[] files = file.listFiles();
 for (File f : files) {
 addFilesToCompress(f, taos);
 }
 } else {
 // 如果是文件,则添加到压缩中 TarArchiveEntry entry = new TarArchiveEntry(file.getName());
 taos.putArchiveEntry(entry);

 FileInputStream fis = new FileInputStream(file);
 IOUtils.copy(fis, taos);
 fis.close();
 }
 }
}


#### **使用示例**
javapublic class Main {
 public static void main(String[] args) throws Exception {
 // 源目录 String srcDir = "src";

 // 目标压缩文件 String destFile = "example.tar.gz";

 // 压缩源目录下的所有文件 CompressUtil.compressFiles(srcDir, destFile);

 System.out.println("压缩完成!");
 }
}


通过以上的例子,我们可以看到使用 Java 的 ZIP 和 JAR 库、Apache Commons Compress 库对多个文件进行压缩和解压是非常简单的。

相关标签:pythonjava开发语言
其他信息

其他资源

Top