当前位置:首页 > Java

java如何压缩字节

2026-03-25 00:13:50Java

使用 Deflater 类压缩字节

Java 提供了 java.util.zip.Deflater 类用于压缩字节数据。以下是一个示例代码:

java如何压缩字节

import java.util.zip.Deflater;

public class ByteCompressor {
    public static byte[] compress(byte[] input) {
        Deflater deflater = new Deflater();
        deflater.setInput(input);
        deflater.finish();

        byte[] buffer = new byte[input.length];
        int compressedLength = deflater.deflate(buffer);
        byte[] output = new byte[compressedLength];
        System.arraycopy(buffer, 0, output, 0, compressedLength);
        return output;
    }
}

使用 Inflater 类解压缩字节

解压缩可以使用 java.util.zip.Inflater 类:

java如何压缩字节

import java.util.zip.Inflater;

public class ByteDecompressor {
    public static byte[] decompress(byte[] input) {
        Inflater inflater = new Inflater();
        inflater.setInput(input);

        byte[] buffer = new byte[1024];
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        try {
            while (!inflater.finished()) {
                int count = inflater.inflate(buffer);
                outputStream.write(buffer, 0, count);
            }
        } catch (DataFormatException e) {
            e.printStackTrace();
        }
        return outputStream.toByteArray();
    }
}

使用 GZIPOutputStreamGZIPInputStream

对于简单的 GZIP 格式压缩:

import java.io.*;
import java.util.zip.GZIPOutputStream;
import java.util.zip.GZIPInputStream;

public class GzipCompressor {
    public static byte[] compress(byte[] input) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try (GZIPOutputStream gzip = new GZIPOutputStream(bos)) {
            gzip.write(input);
        }
        return bos.toByteArray();
    }

    public static byte[] decompress(byte[] input) throws IOException {
        ByteArrayInputStream bis = new ByteArrayInputStream(input);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try (GZIPInputStream gzip = new GZIPInputStream(bis)) {
            byte[] buffer = new byte[1024];
            int len;
            while ((len = gzip.read(buffer)) > 0) {
                bos.write(buffer, 0, len);
            }
        }
        return bos.toByteArray();
    }
}

使用 Apache Commons Compress 库

如果需要更高级的压缩算法(如 LZ4、Brotli 等),可以使用 Apache Commons Compress:

import org.apache.commons.compress.compressors.lz4.FramedLZ4CompressorOutputStream;
import org.apache.commons.compress.compressors.lz4.FramedLZ4CompressorInputStream;

public class LZ4Compressor {
    public static byte[] compress(byte[] input) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try (FramedLZ4CompressorOutputStream lz4 = new FramedLZ4CompressorOutputStream(bos)) {
            lz4.write(input);
        }
        return bos.toByteArray();
    }

    public static byte[] decompress(byte[] input) throws IOException {
        ByteArrayInputStream bis = new ByteArrayInputStream(input);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try (FramedLZ4CompressorInputStream lz4 = new FramedLZ4CompressorInputStream(bis)) {
            byte[] buffer = new byte[1024];
            int len;
            while ((len = lz4.read(buffer)) > 0) {
                bos.write(buffer, 0, len);
            }
        }
        return bos.toByteArray();
    }
}

注意事项

  • 压缩小数据可能会产生比原始数据更大的结果,因为压缩算法有头部信息。
  • 选择合适的压缩级别(DeflatersetLevel 方法)可以平衡压缩率和速度。
  • 处理大文件时,建议使用流式处理而不是一次性读取全部内容到内存。

以上方法可以根据具体需求选择使用,内置的 DeflaterGZIP 适用于大多数场景,而第三方库如 Apache Commons Compress 提供了更多算法选择。

标签: 字节java
分享给朋友:

相关文章

java如何打开

java如何打开

安装Java开发环境 下载并安装Java Development Kit (JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH变量正…

如何打开java

如何打开java

打开 Java 程序的方法 通过命令行运行 Java 程序 确保已安装 Java Development Kit (JDK) 并配置环境变量。使用 javac 编译 .java 文件,生成 .clas…

如何运行java程序

如何运行java程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…

如何选择java培训

如何选择java培训

评估培训机构资质 选择有正规资质的机构,查看其营业执照、办学许可证等。优先考虑具备人力资源和社会保障部或教育部认证的机构,这类机构的教学质量和课程设置通常更规范。 考察课程内容与行业需求匹配度…