用vc6定义和生成的索引文件,请问在java中如何读出索引文件的内容?c++定义的索引文件的结构体如下,请大家指教,谢谢!
typedef struct a

int num;
int id;
byte[4] status;
long ctm;
long rtm;
int err;
byte[4] ext; 
} ;typedef struct b  

int id;
long et;
byte type;
byte cancel;
byte done;
byte extst;
long msglen; 
long cvtm;
long etm;
int no;
int errid;
byte[4] ext;
} ;

解决方案 »

  1.   

    因为你的结构体长度固定,所以每次读a,b结构体size的字节,然后一个域一个域拆解!
      

  2.   

    索引文件是按此结构体的顺序存放的,我用java里的DataInputStream读取的时候输出数据与实际不符,请高人指点。vc里定义的基本数据类型长度与java的不一致,该如何处理呢?
      

  3.   

    类型有对应关系滴,你看一下不知道你有没有用,j开头的是java类型typedef long jint;
    typedef __int64 jlong;
    typedef signed char jbyte;
    typedef unsigned char jboolean;
    typedef unsigned short jchar;
    typedef short jshort;
    typedef float jfloat;
    typedef double jdouble;
      

  4.   

    索引文件是vc定义和生成,无法改动。现在要用java来读取该索引文件的内容
      

  5.   

    晕,没人要你改呀,知道对照类型不就可以知道对应在java中要读多少长度了嘛
    我给你的对照是jni中的c/C++与java类型对照关系
      

  6.   

    那在java里如何使用呢,能否给个例子看看呢?
      

  7.   

    jlong 与Java中的long类型对应
    jint 与Java中的int类型对应
    不知道这样说明不明白??????
    呵呵!!
      

  8.   

    我是这样写的,但读出来的不对,应该怎么做呢?
    public class Dataoutput {
    public static void main(String args[]) throws IOException {

    DataInputStream dis = new DataInputStream(new FileInputStream(
    "c:\\aa.txt"));

    try {
    System.out.println(dis.readInt());
    System.out.println(dis.readInt());
    ......

    finally {
    dis.close();
    }
    }}
      

  9.   

    用c语言解析,然后用jni调本地方法。