import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipUtils {
/**
*
* 使用gzip进行压缩
*/
public static String
gzip(String primStr) {
if (primStr ==
null || primStr.length() ==
0) {
return primStr;
}
ByteArrayOutputStream out =
new ByteArrayOutputStream();
GZIPOutputStream gzip =
null;
try {
gzip =
new GZIPOutputStream(out);
gzip.write(primStr.getBytes());
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (gzip !=
null) {
try {
gzip.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
return new sun.misc.BASE64Encoder().encode(out.toByteArray());
}
/**
*
* <p>
* Description:使用gzip进行解压缩
* </p>
*
* @param compressedStr
* @return
*/
public static String
gunzip(String compressedStr) {
if (compressedStr ==
null) {
return null;
}
ByteArrayOutputStream out =
new ByteArrayOutputStream();
ByteArrayInputStream in =
null;
GZIPInputStream ginzip =
null;
byte[] compressed =
null;
String decompressed =
null;
try {
compressed =
new sun.misc.BASE64Decoder()
.decodeBuffer(compressedStr);
in =
new ByteArrayInputStream(compressed);
ginzip =
new GZIPInputStream(in);
byte[] buffer =
new byte[
1024];
int offset = -
1;
while ((offset = ginzip.read(buffer)) != -
1) {
out.write(buffer,
0, offset);
}
decompressed = out.toString();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (ginzip !=
null) {
try {
ginzip.close();
}
catch (IOException e) {
}
}
if (in !=
null) {
try {
in.close();
}
catch (IOException e) {
}
}
if (out !=
null) {
try {
out.close();
}
catch (IOException e) {
}
}
}
return decompressed;
}
/**
* 使用zip进行压缩
*
* @param str
* 压缩前的文本
* @return 返回压缩后的文本
*/
public static final String
zip(String str) {
if (str ==
null)
return null;
byte[] compressed;
ByteArrayOutputStream out =
null;
ZipOutputStream zout =
null;
String compressedStr =
null;
try {
out =
new ByteArrayOutputStream();
zout =
new ZipOutputStream(out);
zout.putNextEntry(
new ZipEntry(
"0"));
zout.write(str.getBytes());
zout.closeEntry();
compressed = out.toByteArray();
compressedStr =
new sun.misc.BASE64Encoder().encodeBuffer(compressed);
}
catch (IOException e) {
compressed =
null;
}
finally {
if (zout !=
null) {
try {
zout.close();
}
catch (IOException e) {
}
}
if (out !=
null) {
try {
out.close();
}
catch (IOException e) {
}
}
}
return compressedStr;
}
/**
* 使用zip进行解压缩
*
* @param compressed
* 压缩后的文本
* @return 解压后的字符串
*/
public static final String
unzip(String compressedStr) {
if (compressedStr ==
null) {
return null;
}
ByteArrayOutputStream out =
null;
ByteArrayInputStream in =
null;
ZipInputStream zin =
null;
String decompressed =
null;
try {
byte[] compressed =
new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);
out =
new ByteArrayOutputStream();
in =
new ByteArrayInputStream(compressed);
zin =
new ZipInputStream(in);
zin.getNextEntry();
byte[] buffer =
new byte[
1024];
int offset = -
1;
while ((offset = zin.read(buffer)) != -
1) {
out.write(buffer,
0, offset);
}
decompressed = out.toString();
}
catch (IOException e) {
decompressed =
null;
}
finally {
if (zin !=
null) {
try {
zin.close();
}
catch (IOException e) {
}
}
if (in !=
null) {
try {
in.close();
}
catch (IOException e) {
}
}
if (out !=
null) {
try {
out.close();
}
catch (IOException e) {
}
}
}
return decompressed;
}
}
转载于:https://www.cnblogs.com/bilaisheng/p/10211019.html
相关资源:JAVA上百实例源码以及开源项目