1. 程式人生 > >zip壓縮和解壓

zip壓縮和解壓

package com.yy.gpo.common.utils;


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;


import org.apache.commons.codec.binary.Base64;


public class ZipUtil {


/**
* 使用zip進行壓縮

* @param str
* @author: pzx
*            壓縮前的文字
* @return 返回壓縮後的文字
*/
public static final String zipBase64String(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("zip"));
zout.write(str.getBytes("utf-8"));
zout.closeEntry();
compressed = out.toByteArray();


compressedStr = Base64.encodeBase64String(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
*            Base64轉碼的壓縮文字
* @return 解壓後的字串
*/
public static String unzipBase642String(String base64CompressedStr) {
if (base64CompressedStr == null) {
return null;
}


ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = null;
ZipInputStream ginzip = null;
String decompressed = null;
try {
byte[] compressed = Base64.decodeBase64(base64CompressedStr);
in = new ByteArrayInputStream(compressed);
ginzip = new ZipInputStream(in);
ginzip.getNextEntry();


byte[] buffer = new byte[1024];
int offset = -1;
while ((offset = ginzip.read(buffer)) != -1) {
out.write(buffer, 0, offset);
}
decompressed = out.toString("utf-8");
} catch (IOException e) {

} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
}
}
if (ginzip != null) {
try {
ginzip.close();
} catch (IOException e) {
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}


return decompressed;
}


}