Java实现gz压缩与解压缩

简介: Java实现gz压缩与解压缩

压缩

/**
 * 将指定文件GZ压缩,并删除原文件。
 */
public static void gzip(String fileName) throws Exception {
    String outFileName = fileName + ".gz";
    GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(outFileName));
    FileInputStream in = new FileInputStream(fileName);
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.finish();
    out.close();
    new File(fileName).delete();
}

解压缩

/**
 * 将指定GZ文件解压缩,并删除原文件。
 */
public static void gunzip(String gzFileName) throws Exception {
    String outFileName = gzFileName.substring(0, gzFileName.length() - 3);
    // 文本文件输出流
    FileOutputStream fileOutput = new FileOutputStream(outFileName);
    GZIPInputStream gzFileInput = new GZIPInputStream(new FileInputStream(gzFileName));
    byte[] buf = new byte[1024];
    int len;
    while ((len = gzFileInput.read(buf)) > 0) {
        fileOutput.write(buf, 0, len);
    }
    gzFileInput.close();
    fileOutput.close();
    new File(gzFileName).delete();
}

调用示例

public static void main(String[] args) {
    String filename = "/xxx/xxx/xxx.txt";
    try {
        // gzip压缩文件
        GzipUtils.gzip(filename);
        
        // gunzip解压文件
        GzipUtils.gunzip(filename + ".gz");
    } catch (Exception e) {
        e.printStackTrace();
    }
}
相关文章
|
1月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
48 5
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
100 2
|
2月前
|
算法 Java
Java 压缩文件
在Java中压缩文件是一个常见的需求,通常可以通过使用Java自带的`java.util.zip`包来实现。这个包提供了`ZipOutputStream`类来创建ZIP格式的压缩文件。以下是一个简单的示例,展示了如何将多个文件压缩到一个ZIP文件中。 ### 示例:将多个文件压缩到一个ZIP文件中 ```java import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipFilesExample { public static vo
|
3月前
|
Java 大数据 测试技术
Java对象头压缩---- 永久为Java应用“降本增效”
本文介绍了一下OpenJDK的最新技术,对象头压缩,来大幅优化Java对象的内存占用。
|
3月前
|
Java
Java SpringBoot 7z 压缩、解压
Java SpringBoot 7z 压缩、解压
70 1
|
4月前
|
Java 运维
开发与运维技术问题之ava对象头压缩技术支持所有的Java垃圾回收器如何解决
开发与运维技术问题之ava对象头压缩技术支持所有的Java垃圾回收器如何解决
33 1
|
3月前
|
存储 安全 算法
Java中防止压缩炸弹的技术分享
【8月更文挑战第17天】在软件开发和数据处理的日常工作中,我们经常会遇到各种压缩文件。然而,一种被称为“压缩炸弹”的恶意文件却给开发者带来了不小的困扰。压缩炸弹通过特殊设计的压缩算法,使得极小的文件在解压后能膨胀到异常巨大的体积,从而消耗大量系统资源甚至导致系统崩溃。本文将围绕“如何在Java中防止压缩炸弹”这一主题,分享一些实用的技术干货。
115 0
|
4月前
|
算法 Java
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
58 1
|
4月前
|
算法 Java 程序员
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
49 0
|
5月前
|
Java
赫夫曼压缩解压(java)
赫夫曼压缩解压(java)