1.壓縮文件夾
2.壓縮單個文件
3.使用gzip進行壓縮
4.使用gzip進行解壓縮
/**
* @Title: compressedFiles
* @Description: 壓縮文件夾
* @param resourcesPath
* @param targetPath
* @param zipName
* @throws Exception
* @return void 返回類型
* @throws
*/
public synchronized static void compressedFiles(String resourcesPath, String targetPath,
String zipName) throws Exception {
File resourcesFile = new File(resourcesPath);
File targetFile = new File(targetPath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
String targetName = zipName + ".zip";
FileOutputStream outputStream = new FileOutputStream(targetPath + "/"
+ targetName);
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
outputStream));
out.setEncoding("GBK");
createCompressedFile(out, resourcesFile, "");
out.close();
}
/**
* @Title: compressedSingleFile
* @Description: 壓縮單個文件
* @param resourcesFilePath
* @param targetPath
* @param zipName
* @throws Exception
* @return void 返回類型
* @throws
*/
public synchronized static void compressedSingleFile(String resourcesFilePath, String targetPath,String zipName)
throws Exception {
File resourcesFile = new File(resourcesFilePath);
File targetFile = new File(targetPath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
String targetName = zipName + ".zip";
FileOutputStream outputStream = new FileOutputStream(targetPath + "/"
+ targetName);
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
outputStream));
out.setEncoding("GBK");
createCompressedFile(out, resourcesFile, resourcesFile.getName());
out.close();
}
/**
* 使用gzip進行壓縮
* @throws Exception
*/
public static String gzip(String primStr) throws Exception {
if (primStr == null || "".equals(primStr)) {
return "";
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip=null;
try {
gzip = new GZIPOutputStream(out);
gzip.write(primStr.getBytes());
} catch (Exception e) {
throw e;
}finally{
if(gzip!=null){
try {
gzip.close();
} catch (Exception e) {
throw e;
}
}
}
return new sun.misc.BASE64Encoder().encode(out.toByteArray());
}
/**
*
* <p>Description:使用gzip進行解壓縮</p>
* @param compressedStr
* @return
* @throws Exception
*/
public static String gunzip(String compressedStr) throws Exception{
if(compressedStr==null||"".equals(compressedStr)){
return "";
}
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 (Exception e) {
throw e;
} finally {
if (ginzip != null) {
try {
ginzip.close();
} catch (Exception e) {
throw e;
}
}
if (in != null) {
try {
in.close();
} catch (Exception e) {
throw e;
}
}
if (out != null) {
try {
out.close();
} catch (Exception e) {
throw e;
}
}
}
return decompressed;
}