import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class GZIPUtils { public static final String GZIP_ENCODE_UTF_8 = "UTF-8"; String final pública estática GZIP_ENCODE_ISO_8859_1 = "ISO-8859-1";
public static byte [] compress (String str, String encoding) { if (str == null || str.length () == 0) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream (); GZIPOutputStream gzip; tente { gzip = new GZIPOutputStream (out); gzip.write (str.getBytes (codificação)); gzip.close (); } catch (Exception e) { e.printStackTrace (); } return out.toByteArray (); } public static byte [] compress (String str) lança IOException { return compress (str, GZIP_ENCODE_UTF_8);
}
byte estático público [] descompactar (byte [] bytes) { if (bytes == null || bytes.length == 0) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream (); ByteArrayInputStream in = new ByteArrayInputStream (bytes); tente { GZIPInputStream ungzip = new GZIPInputStream (em); byte [] buffer = novo byte [256]; int n; while ((n = ungzip.read (buffer))> = 0) { out.write (buffer, 0, n); } } catch (Exception e) { e.printStackTrace (); }
return out.toByteArray ();
}
public static String uncompressToString (byte [] bytes, String encoding) {
if (bytes == null || bytes.length == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream ();
ByteArrayInputStream in = new ByteArrayInputStream (bytes);
tente { GZIPInputStream ungzip = new GZIPInputStream (em); byte [] buffer = novo byte [256]; int n; while ((n = ungzip.read (buffer))> = 0) { out.write (buffer, 0, n); } return out.toString (codificação);
} catch (Exception e) { e.printStackTrace (); } return null; } público estático String uncompressToString (byte [] bytes) { return uncompressToString (bytes, GZIP_ENCODE_UTF_8); } public static void main (String [] args) lança IOException { String s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; System.out.println ("字符串 长度 :" + s.length ()); System.out.println ("压缩 后 ::" + compress (s) .length); System.out.println ("解压 后 :" + descompactar (compress (s)). Length); System.out.println ("解压 字符串 后 后 :" + uncompressToString (compress (s)). Length ());