用FileInputStream把文件全部读到一个byte[]里
然后根据你知道的偏移量把对应的byte取出来存到另一个byte[]
转成String就用new String(byte[],"编码")
转成数字就通过移位或是乘法来做.

解决方案 »

  1.   

    Eraserpro:能否给出一个简单的例子代码,非常感谢
      

  2.   

    DataOutputStream
      DataInputStream
    有相应的read write 方法
      

  3.   

    以下是信息的格式分类信息表:clscaption.sys (二进制文件)分文件头与文件体:
     
     文件头:  
     【
      long nTotal;  //文件中记录的总条数
      long nextID;  //下一个可分配记录的ID号
      long nDel;  //已被逻辑删除的记录数
      】
     
     文件体: 内容为如下的块儿结构,块儿1、块儿2....
      
     块儿1结构示例:  long id;     //分类id
      long parentid;    //父分类id
      char parentname[MAXPARENTCLASSESLEN+1]; //父分类名称
      char classname[ISCM_CLSNAMELEN +1];  //分类名
      char dbname[ISCM_DBNAMELEN+1];  //所属库名
     
      in childclsidnum;    //子分类数量
      long childclsidlist[MAXCHILDCLASSNUM]; //子分类id列表
     
      int nclslevel;   //分类级数
      int locked;    //记录锁定标识,0:未锁定,1:锁定
      int clscapChanged;   //记录改变标识,0:未改变,1:改变
      

  4.   

    File f=new File("数据文件名");
    FileInputSteam fis=new FileInputStream();
    byte[] b=new byte[f.length()];
    fis.read(b,0,f.length());//把数据全部读入数组
    (注意:随手写的,没有处理异常,也不知程序有无错误,IO我很久没用了)
    好了,所有的数据都读入数组b了,接下来就是读取了.
    char按2个byte,int是4个byte,long好像是8个byte(记不清了),提出相应偏移量内的数据就不可以用>>之类的移位符转成相应的数据特别注意:如有回车符的时候要分清是UNIX格式还是Windows格式,Windows格式的回车要多出一个char.
    试试吧!