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"; Cadena final estática pública GZIP_ENCODE_ISO_8859_1 = "ISO-8859-1";
byte estático público [] compress (String str, String encoding) { if (str == null || str.length () == 0) { return null; } ByteArrayOutputStream out = nuevo ByteArrayOutputStream (); GZIPOutputStream gzip; intente { gzip = new GZIPOutputStream (fuera); gzip.write (str.getBytes (codificación)); gzip.close (); } captura (Excepción e) { e.printStackTrace (); } return out.toByteArray (); } byte público estático [] compress (String str) lanza IOException { return compress (str, GZIP_ENCODE_UTF_8);
}
byte estático público [] descomprimir (byte [] bytes) { if (bytes == null || bytes.length == 0) { return null; } ByteArrayOutputStream out = nuevo ByteArrayOutputStream (); ByteArrayInputStream en = nuevo ByteArrayInputStream (bytes); intente { GZIPInputStream ungzip = new GZIPInputStream (in); byte [] búfer = nuevo byte [256]; int n; while ((n = ungzip.read (búfer))> = 0) { out.write (búfer, 0, n); } } catch (Excepción e) { e.printStackTrace (); }
return out.toByteArray ();
}
cadena estática pública descomprimir a cadena (byte [] bytes, codificación de cadena) {
if (bytes == null || bytes.length == 0) {
return null;
}
ByteArrayOutputStream out = nuevo ByteArrayOutputStream ();
ByteArrayInputStream en = nuevo ByteArrayInputStream (bytes);
intente { GZIPInputStream ungzip = new GZIPInputStream (in); byte [] búfer = nuevo byte [256]; int n; while ((n = ungzip.read (búfer))> = 0) { out.write (búfer, 0, n); } return out.toString (codificación);
} captura (Excepción e) { e.printStackTrace (); } return null; } public static String descompressToString (byte [] bytes) { return descompressToString (bytes, GZIP_ENCODE_UTF_8); } public static void main (String [] args) lanza IOException { String s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; System.out.println ("字符串 长度 :" + s.length ()); System.out.println ("压缩 后 ::" + comprimir (s) .longitud); System.out.println ("解压 后 :" + descomprimir (comprimir (s)). Longitud); System.out.println ("解压 字符串 后 ::" + descomprimirToString (comprimir (s)). Length ());