Java 压缩字符串
来源:互联网 发布:java编程思想第6版pdf 编辑:程序博客网 时间:2024/05/20 06:38
关于压缩与解压
压缩算法有多种,我说知道和接触有java I/O自带的zip和gzip两种方式。
本节主要来简单介绍一下在系统交互之间遇到大容量的字符串数据交互时,采用一端压缩,另一端再解压的方式来发送和接收数据。
关于此次的压缩和解压用到的主要就是GZIPOutputStream和GZIPInputStream类,此类的相关介绍在JDK中有详细的介绍,这里就不再累述了。
代码:
ZipStrUtil.java package gzip; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * *Module: ZipUtil.java *Description: 对字符串的压缩及解压 *Company: *Author: pantp *Date: May 6, 2012 */ public class ZipStrUtil { 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("GBK"); } }
0 0
- 字符串压缩 java
- Java字符串压缩存储
- Java 压缩字符串
- JAVA 字符串压缩解压缩
- JAVA 字符串压缩
- Java 压缩字符串
- JAVA String 字符串压缩
- java gzip 压缩字符串
- Java 压缩字符串
- Java 压缩字符串
- Java字符串压缩存储
- java数字字符串压缩
- java 压缩字符串
- Java 压缩字符串
- java压缩字符串
- Android Java 字符串的压缩和解压缩
- JAVA处理字符串压缩以及文件压缩
- Java 字符串压缩ZIP GZIP
- Java---多线程之死锁
- Mysql中 delect 、truncate、drop 的区别
- 正则表达式基础知识
- NSString转换为SEL方法
- eclipse打开项目中文件所在的目录
- Java 压缩字符串
- ORACLE 10.2.0.5RAC仲裁盘损坏后重建
- 新手上路
- asp.net使用placeHolder(转载)
- Select count(*)和Count(1)的区别和执行方式
- 判断一个非负整数是否为2的n次幂?-by大彬
- 通过grub-install命令把grub安装到u盘-总结
- 大话sizeOf()
- leetcode——342——Power of Four