您现在的位置: 好课件首页-->文献/教材-->计算机类-->软件编程

Java对数据库的字符串字段进行压缩保存的尝试

http://www.bestkj.com点击数】:   

数据字段一般都是保存原文的,一来方便在数据库修改和维护,而来有一些查询要用到它。但是在有些时候,我们无需保存原文了,比如在论坛,博客等数据里的内容字段,一般使用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;
    }
  }
}

 

转载请注明来源:http://www.bestkj.com 收藏文章】【告诉好友】【打印文章】【关闭
软件编程热门信息
特别推荐
·VB入门教材
·C/C++语言程序设计培训讲义
·Visual C# 语言编程技术培训教材
·Java 2企业版(J2EE)开发与应用讲义
·Delphi2006介绍
·delphi讲义
·怎样学习C语言
·由C#风潮想起的-给初学编程者的忠告
·C语言图像处理方法
·Delphi快速入门(二)
·Delphi面向对象的编程方法(三)
·C#处理文本文件
软件编程更多资料
授课视频光盘
·物流与供应链管理
·物流企业战略管理
·物流系统分析与设计
·计算机体系结构
·计算机原理
·多媒体技术
·程序设计语言课程设计
·商务英语谈判
·工程结构设计课程设计
·英语本科毕业论文指导
·公差与技术测量
·房地产物业管理
·建筑企业管理
特别推荐
·单片机原理及应用课件频及教学大纲
热门下载