java中的GZIP压缩学习(二)
这是修改之后的代码可以实现解压和压缩,注意数据的编码
/** * 数据压缩 * @param data * @return */public static byte[] dataCompress(byte[] data) {GZIPOutputStream gos;try {ByteArrayInputStream bais = new ByteArrayInputStream(data);ByteArrayOutputStream baos = new ByteArrayOutputStream();gos = new GZIPOutputStream(baos);byte[] buf = new byte[1024];int num;while ((num = bais.read(buf)) != -1) {gos.write(buf, 0, num);}gos.finish();gos.flush();gos.close();byte[] output = baos.toByteArray(); return output;} catch (IOException e) {e.printStackTrace();}return null;}/** * 数据解压缩 * @param data * @return */public static byte[] dataDecompress(byte[] data){try {ByteArrayInputStream bais = new ByteArrayInputStream(data);GZIPInputStream gis = new GZIPInputStream(bais);ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buf = new byte[1024];int num;while((num=gis.read(buf))!=-1){baos.write(buf, 0, num);}gis.close();byte[] ret = baos.toByteArray();baos.close();return ret;} catch (IOException e) {e.printStackTrace();return null;}}public static void main(String[] args) throws Exception {String a = "算法设计阿拉斯加分类啊沙发里的说法 啊大家都是垃圾发了疯啊";byte[] c = a.getBytes("UTF-8");System.out.println(c.length);byte[] d = compress(c);System.out.println(d.length);byte[] e = dataDecompress(d);System.out.println(e.length);System.out.println(new String(e,"UTF-8"));}