关于zip对文本进行压缩和解压
2016-08-08 11:30
447 查看
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) {
e.printStackTrace();
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) {
e.printStackTrace();
} 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;
}
}
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) {
e.printStackTrace();
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) {
e.printStackTrace();
} 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;
}
}
相关文章推荐
- 利用antzip包来进行解压与压缩
- 利用antzip包来进行解压与压缩
- 如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压(转)
- 【可下载】C#中关于zip压缩解压帮助类的封装
- ZLIB quazip (只能对ZIP进行解压,不能对RAR等其它的压缩文件解压)
- 如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压
- C#中关于zip压缩解压帮助类的封装 附源码下载
- 利用哈夫曼树进行文本压缩及解压(步骤)
- 如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压
- 使用ZLIB生成DLL文件,并进行有中文的ZIP文件压缩与解压操作!支持目录压与解!
- 利用apache ant 包进行压缩、解压缩zip,归档tar,解档tar,压缩tar.gz解压tar.gz
- 使用PHP对文件进行压缩解压(zip)
- 使用QuaZip对文件进行压缩解压操作
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- Qt使用QuaZip对文件进行压缩解压操作
- CSharp_SevenZipSharp压缩解压文本
- CentOS安装zip和unzip进行压缩和解压
- C#中关于zip压缩解压帮助类的封装
- 使用apache的工具类进行zip(rar等压缩文件)的解压
- 利用antzip包来进行解压与压缩