import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class ZipStringUtil {
public static String compressString(String originalStr) {
ByteArrayOutputStream byteArrayOutputStream = null;
GZIPOutputStream gzipOutputStream = null;
try {
byteArrayOutputStream = new ByteArrayOutputStream();
gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);
gzipOutputStream.write(originalStr.getBytes());
gzipOutputStream.close();
byteArrayOutputStream.close();
return Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != gzipOutputStream) {
try {
gzipOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != byteArrayOutputStream) {
try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
public static String decompressString(String compressStr) {
byte[] compressBytes = Base64.getDecoder().decode(compressStr);
ByteArrayInputStream byteArrayInputStream = null;
GZIPInputStream gzipInputStream = null;
try {
byteArrayInputStream = new ByteArrayInputStream(compressBytes);
gzipInputStream = new GZIPInputStream(byteArrayInputStream);
StringBuilder stringBuilder = new StringBuilder();
byte[] buffer = new byte[1024];
int byteRead;
while ((byteRead = gzipInputStream.read(buffer)) != -1) {
stringBuilder.append(new String(buffer, 0, byteRead));
}
return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != gzipInputStream) {
try {
gzipInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != byteArrayInputStream) {
try {
byteArrayInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}