java中的GZIP压缩学习(二)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java中的GZIP压缩学习(二)

java中的GZIP压缩学习(二)

 2012/4/24 17:13:39  zhangwe415  程序员俱乐部  我要评论(0)
  • 摘要:这是修改之后的代码可以实现解压和压缩,注意数据的编码/***数据压缩*@paramdata*@return*/publicstaticbyte[]dataCompress(byte[]data){GZIPOutputStreamgos;try{ByteArrayInputStreambais=newByteArrayInputStream(data);ByteArrayOutputStreambaos=newByteArrayOutputStream()
  • 标签:学习 Java 压缩
这是修改之后的代码可以实现解压和压缩,注意数据的编码
	/**
	 * 数据压缩
	 * @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"));
	}
发表评论
用户名: 匿名