Java 压缩解压字符串(支持中文)

public static void main(String[] args) throws Exception{
String str ="xflush3.0个人感觉最大的特点就是监控配置非常灵活,从日志的格式定义、收集、配置,都可以自定义;这样对于老应用的打点日志,不需要关心规则的定义就可以平滑的接入该平台。 本篇幅以AE detail的应用为例,介绍一部分业务监控规则的配置方式以及遇到的一些坑。";
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");
}

时间: 2024-11-10 12:41:39

Java 压缩解压字符串(支持中文)的相关文章

java zip压缩和解压(支持中文)

package com.xeon.mis.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Enumeration; impor

java压缩和解压字符串,Byte数组,String

在网上找到的压缩解压的工具类,可以压缩String字符串 /*** * 压缩GZip * * @param data * @return */ public static byte[] gZip(byte[] data) { byte[] b = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(bos); gzip.w

java压缩解压zip文件,中文乱码还需要ant.jar包

va] view plaincopyprint? package cn.cn; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; i

使用JAVA解压加密的中文ZIP压缩包

近来项目中需要对ZIP压缩包解压,然后将解压后的内容存放到指定的目录下. 该压缩包的特性: 使用标准的zip压缩格式(压缩算法没有深入探究) 压缩包中带有目录并且目录名称是中文 压缩时加了密码 因为jre中自带的java.util.zip.*包不支持中文及加密压缩,所以选择使用zip4j包. 下面是解压的实现代码: 1 public class UnZip { 2 private final int BUFF_SIZE = 4096; 3 4 /* 5 获取ZIP文件中的文件名和目录名 6 */

支持文件的流式压缩/解压IP*Works! Zip

IP*Works! Zip是为应用程序添加压缩功能的完全可控件组件包.使用简单.速度快并且效率很高,是一个为桌面和网上应用程序添加压缩和解压缩功能的组件套包./n software IP*Works! Zip支持Zip.Tar.Gzip 和 Jar压缩标准,特别的,它支持流式压缩.加密压缩,在压缩包里就可以直接删除文件.我们目前提供完全可控的纯C# .NET组件.纯Java Beans. 产品特征: IP*Works! Zip基于纯C#代码,是完全可控的.NET组件,不依赖于任何外部代码.是完全

实现Java代码压缩解压

原因:某个时间想对服务器上的zip中的某些文件进行修改 本来以为很简单的事情,在网上找了好些代码,结果效果都不是很理想. 实现对象:对各种类型的文件夹(包含子文件或子文件夹) 下面介绍一下自己综合网上代码自己写的 首先要倒入一个jar包:(零积分下载) package com.tzx.test2; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import org.ap

SAPCAR 压缩解压软件的使用方法

SAPCAR 是 SAP 公司使用的压缩解压软件,从 SAP 网站下载的补丁包和小型软件基本都是扩展名为 car 或 sar 的,它们都可以用 SAPCAR 来解压.下面是它的使用说明: 用法: 创建新档案:SAPCAR -c[vir][f archive] [-P] [-C directory]   [-A filename] [-T filename] [-X filename]   [-p value] [-V] file1 file2 ... 列出一个档案的内容:SAPCAR -t[vs

C# GZipStream 压缩 解压

关于GZipStream压缩解压,网上找了很多资料,完整的不多,要么是针对字符串压缩解压缩的,要么只实现了针对单个文件的压缩解压缩,还有的不支持子文件夹的压缩,实用性都不是很大. 以下整理了压缩解压缩的代码,供以后拿出来翻阅,在项目中可以直接使用这3个类,已通过测试. 1.首先是有一个描述要压缩的文件类GZipFileInfo,包含了一些文件信息 /// <summary> /// 要压缩的文件信息 /// </summary> public class GZipFileInfo

WebAPI性能优化之压缩解压

有时候为了提升WebAPI的性能,减少响应时间,我们会使用压缩和解压,而现在大多数客户端浏览器都提供了内置的解压支持.在WebAPI请求的资源越大时,使用压缩对性能提升的效果越明显,而当请求的资源很小时则不需要使用压缩和解压,因为压缩和解压同样也是需要耗费一定的时间的. 看见老外写了一篇ASP.NET Web API GZip compression ActionFilter with 8 lines of code 说实话被这标题吸引了,8行代码实现GZip压缩过滤器,我就照着他的去实践了一番