1. 将字符串压缩到内存
private byte[] zip(String foo) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream gzos = null;
try {
gzos = new ZipOutputStream(baos);
gzos.putNextEntry(new ZipEntry("Model"));
gzos.write(foo.getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
} finally {
if (gzos != null)
try {
gzos.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
try {
gzos.close();
} catch (IOException ignore) {
ignore.printStackTrace();
}
}
return baos.toByteArray();
}
2. 解压内存中的zip数据
public String upZipFromByte(byte[] sourceZip){
StringBuffer sSourceStringBuf = new StringBuffer();
ByteArrayInputStream inputStream = new ByteArrayInputStream(sourceZip);
ZipInputStream zipin = new ZipInputStream(inputStream);
ZipEntry zipEntry = null; // 定义一个ZipEntry对象,用于接收压缩文件中 的每一个实体
try {
if ((zipEntry = zipin.getNextEntry()) != null) {
System.out.println(zipEntry.getSize());
System.out.println(zipEntry.getCompressedSize());
int nReadSize;
byte [] unzipBuf = new byte [1024];
while ((nReadSize = zipin.read(unzipBuf, 0, 1024)) != -1){
String sContent = new String(unzipBuf, "UTF-8");
sSourceStringBuf.append(sContent.trim().toString());
unzipBuf = new byte [1024];
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
try {
zipin.close();
} catch (IOException e) {
e.printStackTrace();
}
return sSourceStringBuf.toString();
}