当前位置: 首页 > news >正文

Java中的文件压缩和解压缩方法

在Java中,我们可以使用多种方法来进行文件的压缩和解压缩操作。下面将介绍两种常用的方法:使用Java的ZipInputStream和ZipOutputStream类以及使用Apache Commons Compress库中的ZipArchiveInputStream和ZipArchiveOutputStream类。

一、使用Java的ZipInputStream和ZipOutputStream类 Java提供了ZipInputStream和ZipOutputStream类来实现对ZIP文件的压缩和解压缩操作。下面是使用这两个类进行文件压缩和解压缩的示例代码:

  1. 文件压缩
import java.io.*;
import java.util.zip.*;public class FileCompressionExample {public static void main(String[] args) {try {String sourceFile = "path/to/source/file.txt";String compressedFile = "path/to/compressed/file.zip";FileOutputStream fos = new FileOutputStream(compressedFile);ZipOutputStream zos = new ZipOutputStream(fos);File file = new File(sourceFile);FileInputStream fis = new FileInputStream(file);ZipEntry zipEntry = new ZipEntry(file.getName());zos.putNextEntry(zipEntry);byte[] bytes = new byte[1024];int length;while ((length = fis.read(bytes)) >= 0) {zos.write(bytes, 0, length);}zos.closeEntry();fis.close();zos.close();System.out.println("File compressed successfully!");} catch (IOException e) {e.printStackTrace();}}
}
  1. 文件解压缩
import java.io.*;
import java.util.zip.*;public class FileDecompressionExample {public static void main(String[] args) {try {String compressedFile = "path/to/compressed/file.zip";String decompressedFile = "path/to/decompressed/file.txt";FileInputStream fis = new FileInputStream(compressedFile);ZipInputStream zis = new ZipInputStream(fis);ZipEntry zipEntry = zis.getNextEntry();FileOutputStream fos = new FileOutputStream(decompressedFile);byte[] bytes = new byte[1024];int length;while ((length = zis.read(bytes)) >= 0) {fos.write(bytes, 0, length);}zis.closeEntry();zis.close();fos.close();System.out.println("File decompressed successfully!");} catch (IOException e) {e.printStackTrace();}}
}

二、使用Apache Commons Compress库中的ZipArchiveInputStream和ZipArchiveOutputStream类 Apache Commons Compress库提供了更加灵活和易于使用的压缩和解压缩功能。下面是使用ZipArchiveInputStream和ZipArchiveOutputStream类进行文件压缩和解压缩的示例代码:

  1. 文件压缩
import org.apache.commons.compress.archivers.zip.*;
import org.apache.commons.compress.utils.IOUtils;import java.io.*;public class FileCompressionExample {public static void main(String[] args) {try {String sourceFile = "path/to/source/file.txt";String compressedFile = "path/to/compressed/file.zip";FileOutputStream fos = new FileOutputStream(compressedFile);ZipArchiveOutputStream zos = new ZipArchiveOutputStream(fos);File file = new File(sourceFile);FileInputStream fis = new FileInputStream(file);ZipArchiveEntry zipEntry = new ZipArchiveEntry(file.getName());zos.putArchiveEntry(zipEntry);IOUtils.copy(fis, zos);zos.closeArchiveEntry();fis.close();zos.close();System.out.println("File compressed successfully!");} catch (IOException e) {e.printStackTrace();}}
}
  1. 文件解压缩
import org.apache.commons.compress.archivers.zip.*;
import org.apache.commons.compress.utils.IOUtils;import java.io.*;public class FileDecompressionExample {public static void main(String[] args) {try {String compressedFile = "path/to/compressed/file.zip";String decompressedFile = "path/to/decompressed/file.txt";FileInputStream fis = new FileInputStream(compressedFile);ZipArchiveInputStream zis = new ZipArchiveInputStream(fis);ZipArchiveEntry zipEntry = zis.getNextZipEntry();FileOutputStream fos = new FileOutputStream(decompressedFile);IOUtils.copy(zis, fos);zis.close();fos.close();System.out.println("File decompressed successfully!");} catch (IOException e) {e.printStackTrace();}}
}

以上是使用Java的ZipInputStream和ZipOutputStream类以及Apache Commons Compress库中的ZipArchiveInputStream和ZipArchiveOutputStream类进行文件压缩和解压缩的方法示例。无论使用哪种方法,都需要引入相应的库文件并处理可能的IO异常。压缩和解压缩操作的过程主要涉及到文件的读取和写入,需要使用合适的输入流和输出流进行操作。在压缩过程中,我们需要逐个将待压缩的文件添加到压缩文件中,在解压缩过程中,我们需要逐个从压缩文件中获取文件并进行解压缩操作。


http://www.mrgr.cn/news/23496.html

相关文章:

  • [实践应用] 深度学习之激活函数
  • 将BAT脚本设置为Windows开机自启动
  • C++ 中的默认删除特征:管理资源与防止意外拷贝
  • Python算法工程师面试整理-项目经验
  • 【题目全解】ACGO排位赛#12
  • 中来股份深陷股权冻结
  • nacos鉴权配置管理
  • Java面试篇基础部分-Java各种垃圾收集器
  • Ubuntu查看系统用户信息
  • Go语言中的队列与栈:基础与实践
  • VIT模型简介
  • Leetcode 最大子数组和
  • Go入门语法
  • 主机托管和虚拟主机的区别有哪些
  • 实战千问2大模型第一天——Qwen2-7B(知识问答)的部署和fastapi封装
  • 【Qt】Qt文件
  • 500以内蓝牙耳机最良心推荐,四款高人气机型深度测评!
  • 一、MyBatis框架
  • 【基础算法总结】二分查找
  • Pyecharts 保存 png 图片问题