JAVA String 字符串压缩

来源:互联网 发布:python time 时间戳 编辑:程序博客网 时间:2024/06/06 07:27


public class StringCompress {/** * 字符串的压缩 *  * @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