Java对数据库的字符串字段举行压缩保存的尝试[Java编程]
本文“Java对数据库的字符串字段举行压缩保存的尝试[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
数据字段普通都是保存原文的,一来便利在数据库改正和保护,而来有一些查询要用到它.但是在有些时刻,我们无需保存原文了,比方在论坛,博客等数据里的内容字段,普通利用Clob范例,其很少参与搜索,并且就算要全文检索,我们也不举荐利用数据库的like 等,而应当用第三方的全文检索工具,比方lucene等实现.
这类数据都是大量的文本数据,有很大的可压缩性.由于一些缘由,我的数据库已经超越我能容忍的大小了,所以想到了能否可以把这个数据压缩存储来节俭空间,于是有了以下的尝试.
压缩算法就先不过量考虑了,就用Zip举行尝试便可以了.先看看若何把字符串压缩和解压缩的算法.
package com.laozizhu.article.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
/**
* 把字符串利用ZIP压缩和解压缩的代码.
*
* @author JAVA世纪网(java2000.net, laozizhu.com)
*/
public class StringZip {
public static String zipString(String str) {
try {
ByteArrayOutputStream bos = null;
GZIPOutputStream os = null;
byte[] bs = null;
try {
bos = new ByteArrayOutputStream();
os = new GZIPOutputStream(bos);
os.write(str.getBytes());
os.close();
bos.close();
bs = bos.toByteArray();
return new String(bs, "iso-8859-1");
} finally {
bs = null;
bos = null;
os = null;
}
} catch (Exception ex) {
return str;
}
}
public static String unzipString(String str) {
ByteArrayInputStream bis = null;
ByteArrayOutputStream bos = null;
GZIPInputStream is = null;
byte[] buf = null;
try {
bis = new ByteArrayInputStream(str.getBytes("ISO-8859-1"));
bos = new ByteArrayOutputStream();
is = new GZIPInputStream(bis);
buf = new byte[1024];
int len;
while ((len = is.read(buf)) != -1) {
bos.write(buf, 0, len);
}
is.close();
bis.close();
bos.close();
return new String(bos.toByteArray());
} catch (Exception ex) {
return str;
} finally {
bis = null;
bos = null;
is = null;
buf = null;
}
}
}
以上是“Java对数据库的字符串字段举行压缩保存的尝试[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |