/** * 字符串压缩 * @param input * @return */ public static final byte[] compress(byte[] input) { if (input == null) { return null; } Deflater compressor = new Deflater(); compressor.setLevel(Deflater.BEST_SPEED); //调整压缩策略,这里使用了最快速的压缩方式 compressor.setInput(input); compressor.finish(); int len = input.length; ByteArrayOutputStream bos = new ByteArrayOutputStream(len); while (!compressor.finished()) { byte[] buf = new byte[len]; int count = compressor.deflate(buf); if (count > 0) { bos.write(buf, 0, count); } } return bos.toByteArray(); } /** * 解压缩 * @param compressed * @return */ public static final byte[] decompress(byte[] compressed) { if (compressed == null) { return null; } try { Inflater decompressor = new Inflater(); decompressor.setInput(compressed); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len = compressed.length << 2; while (!decompressor.finished()) { byte[] buf = new byte[len]; int count = decompressor.inflate(buf); if (count > 0) { bos.write(buf, 0, count); } } return bos.toByteArray(); } catch (DataFormatException e) { return compressed; } }
字符串压缩与解压
项目中一些大文本需要存数据库,为减少数据库的IO,对文本进行压缩。取出来的时候再解压缩
猜你喜欢
转载自rainshow.iteye.com/blog/1076033
今日推荐
周排行