大家好,我是新手,最近在做毕业设计,是关于数据压缩的,用JAVA编写出一个压缩程序 使用LZ78算法现在的问题是 我已经得到压缩以后的数据,然后进行编码写进另一个文件
压缩后的数据格式是一个int型和一个Sting型的字母 int 型的参数在LZ78压缩算法里表示索引,String型的参数表示nextChar,这两组数据分别背存进两个Vector
例如 源文件是:aababc 一共6个字节
在编译器里把两个Vector打印出来的格式应该是 0a1b2c 
问题是如果把 0a1b2c 当做STRING型写进压缩文件里去的话也是6个字节,如果分开用二进制来写的话 0是0只占1bit,1是1占1bit,2是10只占2bit,然后a b c各 8bits 所以加起来还不到4个字节 大家帮帮我,怎么编码 然后从压缩文件里分别读出int型的和String型的,我IO学的不好,谢谢各位了

解决方案 »

  1.   

    StringBuffer   sb   =   new   StringBuffer();   
      DataInputStream   is   =   //输入流  ,可以按原字符给你读数据 
      
      String   c   =   "";   
        
      while   ((c   =   is.ReadLine())   !=   null)   
          sb.append(c);   
        
      System.out.println(sb.toString());  
      

  2.   

    谢谢guishuanglin,但是这是读数据呀,我说的是写数据,而且读出以后也不能分辨哪个是int型的,哪个string型的
    我希望分别读出原先的int型的和String型的然后把他们再赋给两个Vector 最后进行解压!
    我刚用DataOutput写数据
    DataInputStream  dos= 文件名for(int i=0; i<IndexVec.size();i++)
    {
      dos.writeInt((Integer)IndexVec.elementAt(i));//这个向量里存的是INT型的
      dos.WriteBytes((String)NextCharVec.elementAt(i));//这个存STRING型的
    }
    最后压缩文件越写越大,而且不知道怎么分别读出 int型参数和String型的参数
    谢谢各位帮帮我