现在我有一个400多M的数据库,想把它弄成文件的存储形式,目地是想让它的体积减小下来,之前直接用写文件的方法把数据写到文件中,结果文件的体积比数据库还大    有没有什么方法可以让数据不那么大,是否可以写成一个16进制的文件,该怎么写才能把体积减下来

解决方案 »

  1.   

    每个表建一个POJO类。
    例如User表,有2个字段,name和idimport java.io.Serializable;public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    private long id;
    private String name; public void setId(long id) {
    this.id = id;
    } public void setName(String name) {
    this.name = name;
    } public long getId() {
    return id;
    } public String getName() {
    return name;
    }
    }存入List里,然后序列化后存到文件。
    参考:
    http://qianxunniao.iteye.com/blog/1218609
    此后还可通过反序列化取的全部数据。另外,如果觉得序列化后的文件还是大的话,可以用java的压缩库压成zip。
    反序列化前先解压就可以了。
      

  2.   

    还有一种方法,可以把数字和字符数据分开存放。
    数字的话,保存它的二进制模式,我记得java里面有一个类似于writeByte的方法,用那个写入文件就行。
    字符可以先做一下压缩,然后再保存。
    不过压缩的方法就看你自己怎么选择了。
    最好的方法是分块压缩,这样你在读取查找的时候,没有必要把文件完全解压,只需要解压相关的那一段就行。
      

  3.   

    我那个是手机要用到的sqlite数据库,几百M对手机来说是巨大
      

  4.   

    谢谢啊,虽然最后没有用到这个方法,但这个方法还是让我长了些见识。我最后是直接将那些数据写成16进制数写到文件里去了,这样可以将空间降到100多M,最后再ZIP压缩一下就剩30M了