节省存储空间,对需要存储的字符串、json串压缩处理后再存储 package com.example.biodemo.bio;import org.springframework.util.StringUtils;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import j
package com.example.biodemo.bio; import org.springframework.util.StringUtils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * @author mengqingyi * @create 2017-10-31 13:49 **/ public class GZIPUtils { public static final int BUFFER = 2048; private static void compress(String str) { if (StringUtils.isEmpty(str)) { return; } try { compress(str.getBytes()); } catch (IOException e) { e.printStackTrace(); return; } } private static void compress(InputStream inputStream, OutputStream outputStream) throws IOException { GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream); int count; byte[] data = new byte[BUFFER]; while ((count = inputStream.read(data, 0, BUFFER)) != -1) { gzipOutputStream.write(data, 0, count); } gzipOutputStream.finish(); gzipOutputStream.flush(); gzipOutputStream.close(); } private static byte[] compress(byte[] data) throws IOException { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); //压缩 compress(byteArrayInputStream, byteArrayOutputStream); byte[] output = byteArrayOutputStream.toByteArray(); byteArrayOutputStream.flush(); byteArrayOutputStream.close(); byteArrayInputStream.close(); return output; } private static byte[] decompress(byte[] data) throws IOException { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); //解压缩 decompress(byteArrayInputStream, byteArrayOutputStream); data = byteArrayOutputStream.toByteArray(); byteArrayOutputStream.flush(); byteArrayOutputStream.close(); byteArrayInputStream.close(); return data; } private static void decompress(ByteArrayInputStream byteArrayInputStream, ByteArrayOutputStream byteArrayOutputStream) throws IOException { GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream); int count; byte[] data = new byte[BUFFER]; while ((count = gzipInputStream.read(data, 0, BUFFER)) != -1) { byteArrayOutputStream.write(data, 0, count); } gzipInputStream.close(); } /** * * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String str = "[{\"contact_number\":\"13387768903\",\"contact_seq_no\":\"1\"," + "\"contact_area\":\"广西壮族自治区" + ".百色市\"," + "" + "" + "" + "" + "\"call_count_1week\":\"6\"," + "\"call_count_1month\":\"53\"," + "\"call_count_3month\":\"141\"," + "\"call_count_active_3month\":\"127\"," + "\"call_count_passive_3month\":\"14\"," + "\"call_count_late_night_3month\":\"4\"," + "\"call_count_work_time_3month\":\"78\"," + "\"call_count_offwork_time_3month\":\"59\"," + "\"call_count_workday_3month\":\"103\"," + "\"call_count_holiday_3month\":\"38\"," + "\"call_count_6month\":\"309\"," + "\"call_count_active_6month\":\"281\"," + "\"call_count_passive_6month\":\"28\"," + "\"call_count_late_night_6month\":\"5\"," + "\"call_count_work_time_6month\":\"170\"," + "\"call_count_offwork_time_6month\":\"134\"," + "\"call_count_workday_6month\":\"216\"," + "\"call_count_holiday_6month\":\"93\"," + "\"call_time_1month\":\"2219\"," + "\"call_time_3month\":\"6156\"," + "\"call_time_active_3month\":\"5623\"," + "\"call_time_passive_3month\":\"533\"," + "\"call_time_6month\":\"25778\"," + "\"call_time_active_6month\":\"24660\"," + "\"call_time_passive_6month\":\"1118\"," + "\"msg_count_1month\":\"0\",\"msg_count_3month\":\"0\"," + "\"msg_count_6month\":\"0\"," + "\"is_whole_day_call_3month\":\"是\"," + "\"is_whole_day_call_6month\":\"是\"," + "\"first_time_call_6month\":\"2017-04-01 08:53:59\"," + "\"last_time_call_6month\":\"2017-09-14 " + "17:37:42\"}]"; byte[] input = str.getBytes(); System.out.println(input.length); byte[] data = compress(input); byte[] out = decompress(data); System.out.println(out.length); for (int i = 0; i < out.length; i++) { System.out.println(input[i] == out[i]); } } }