java字符串压缩和解压缩(gzip)

2024-06-13 18:48

本文主要是介绍java字符串压缩和解压缩(gzip),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

java对字符串进行压缩和解压缩

package com.durian.common.tool;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;/*** gzip 对字符串压缩和解压缩* @author leng**/
public class GzipStrUtils {public static void main(String[] args) throws IOException {  // 字符串超过一定的长度  String str = "ABCdef123中文~!@#$%^&*()_+{};/1111111111111111111111111AAAAAAAAAAAJDLFJDLFJDLFJLDFFFFJEIIIIIIIIIIFJJJJJJJJJJJJALLLLLLLLLLLLLLLLLLLLLL" +  "LLppppppppppppppppppppppppppppppppppppppppp===========================------------------------------iiiiiiiiiiiiiiiiiiiiiii";  System.out.println("\n原始的字符串为------->" + str);  float len0=str.length();  System.out.println("原始的字符串长度为------->"+len0);  String ys = compress(str);  System.out.println("\n压缩后的字符串为----->" + ys);  float len1=ys.length();  System.out.println("压缩后的字符串长度为----->" + len1);  String jy = unCompress(ys);  System.out.println("\n解压缩后的字符串为--->" + jy);  System.out.println("解压缩后的字符串长度为--->"+jy.length());  System.out.println("\n压缩比例为"+len1/len0);  //判断  if(str.equals(jy)){  System.out.println("先压缩再解压以后字符串和原来的是一模一样的");  }  }  /**  * 字符串的压缩  *   * @param str  *            待压缩的字符串  * @return    返回压缩后的字符串  * @throws IOException  */  public static String compress(String str) throws IOException {  if (null == str || str.length() <= 0) {  return str;  }  // 创建一个新的 byte 数组输出流  ByteArrayOutputStream out = new ByteArrayOutputStream();  // 使用默认缓冲区大小创建新的输出流  GZIPOutputStream gzip = new GZIPOutputStream(out);  // 将 b.length 个字节写入此输出流  gzip.write(str.getBytes());  gzip.close();  // 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串  return out.toString("ISO-8859-1");  }  /**  * 字符串的解压  *   * @param str  *            对字符串解压  * @return    返回解压缩后的字符串  * @throws IOException  */  public static String unCompress(String str) throws IOException {  if (null == str || str.length() <= 0) {  return str;  }  // 创建一个新的 byte 数组输出流  ByteArrayOutputStream out = new ByteArrayOutputStream();  // 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组  ByteArrayInputStream in = new ByteArrayInputStream(str  .getBytes("ISO-8859-1"));  // 使用默认缓冲区大小创建新的输入流  GZIPInputStream gzip = new GZIPInputStream(in);  byte[] buffer = new byte[256];  int n = 0;  while ((n = gzip.read(buffer)) >= 0) {// 将未压缩数据读入字节数组  // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte数组输出流  out.write(buffer, 0, n);  }  // 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串  return out.toString("UTF-8");  }  }

 

运行输出结果

这篇关于java字符串压缩和解压缩(gzip)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1058131

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具