跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java JDK 内置 ZIP 压缩与解压流示例

Java JDK 内置 java.util.zip 包提供 ZipInputStream 和 ZipOutputStream 类用于处理 ZIP 格式数据。示例展示如何使用字节数组进行压缩和解压操作,包含文件读取、压缩转换、解压还原及写入文件的完整流程。代码通过 BufferedInputStream 和 BufferedOutputStream 优化 IO 性能,演示了从原始字节到压缩字节再恢复原状的过程,适用于需要内存中处理 ZIP 数据的场景。

独立开发者发布于 2018/10/10更新于 2026/7/2443 浏览
Java JDK 内置 ZIP 压缩与解压流示例

Java JDK 内置 ZIP 压缩与解压流

以下代码展示了如何使用 JDK 自带的 java.util.zip 包实现字节数组的压缩与解压功能。

package com.test.java.zip;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class ZipUtil {
    /**
     * 压缩方法
     */
    public static byte[] zip(byte[] source) throws IOException {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream);
        zipOutputStream.putNextEntry(new ZipEntry("0"));
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(zipOutputStream);
        bufferedOutputStream.write(source);
        bufferedOutputStream.close();
        return byteArrayOutputStream.toByteArray();
    }

    
      [] unzip([] source)  IOException {
            ( (source));
         (zipInputStream.getNextEntry() != ) {
                ();
            [] buffer =  [];
               ;
             ((i = zipInputStream.read(buffer)) != -) {
                byteArrayOutputStream.write(buffer, , i);
            }
             byteArrayOutputStream.toByteArray();
        }
         ;
    }

         IOException {
        
           ;
           ;
            ( (file));
        [] bytes1 =  [bufferedInputStream.available()];
        bufferedInputStream.read(bytes1);
        bufferedInputStream.close();
        System.out.println( + bytes1.length);

        
        [] bytes2 = ZipUtil.zip(bytes1);
        System.out.println( + bytes2.length);

        
        [] bytes3 = ZipUtil.unzip(bytes2);
        System.out.println( + bytes3.length);

        
            ( (outFile));
        bufferedOutputStream.write(bytes3);
        bufferedOutputStream.close();
    }
}
/** * 解压方法 */
public
static
byte
byte
throws
ZipInputStream
zipInputStream
=
new
ZipInputStream
new
ByteArrayInputStream
while
null
ByteArrayOutputStream
byteArrayOutputStream
=
new
ByteArrayOutputStream
byte
new
byte
4096
int
i
=
0
while
1
0
return
return
null
public
static
void
main
(String[] args)
throws
// 读文件
String
file
=
"E:/pic.jpg"
String
outFile
=
"E:/picunzip.jpg"
BufferedInputStream
bufferedInputStream
=
new
BufferedInputStream
new
FileInputStream
byte
new
byte
"压缩前大小:"
// 压缩
byte
"压缩后大小:"
// 解压
byte
"unzip 解压后大小:"
// 输出到文件以便验证
BufferedOutputStream
bufferedOutputStream
=
new
BufferedOutputStream
new
FileOutputStream

目录

  1. Java JDK 内置 ZIP 压缩与解压流
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 微信小程序样式与布局详解
  • C++ STL 详解:手写 String 类实现
  • Coze + Bot API:实现带自我反思的高质量长文翻译 Agent
  • π₀:视觉 - 语言 - 动作流模型通用机器人控制
  • AI 编程编辑器 Trae 使用体验:排队机制与效率评估
  • Flutter 使用 wasm_ffi 在鸿蒙端调用 WebAssembly 实战
  • 基于 LangGraph 实现模块化 Skills 型 AI Agent
  • LangChain4j 中 ReAct Agent 的工作原理与实现方法
  • 2024 年主流大型语言模型 LLMs 盘点与解析
  • WinForm 集成 SqlSugar 与 SQLite 实战指南
  • LLaMA-Factory 本地部署与安装配置指南
  • 用 etcd-cpp-apiv3 搭建 C++ 服务注册发现
  • 2026 年 3 月 18 日人工智能产业动态与前沿趋势
  • 2024 年程序员入门大模型必读书单推荐
  • Spring Boot @ConditionalOnMissingBean 误判问题深度解析
  • 2025 年第三季度程序员推荐阅读书单
  • OpenClaw 框架深度指南:HEARTBEAT 机制与定时任务配置
  • VS Code 禁用 Ctrl+I 快捷键触发 Copilot AI 功能
  • ASP.NET Core 主机模型详解:Host、WebHost 与 WebApplication 对比与实践
  • PingFangSC 字体跨平台 Web 解决方案:6 种字重全兼容

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online