用java io流读取文件的二进制数,算了一下大概有1.5M的大小。大概就是1500000个二进制数了。这些二进制数是按照一种格式组合的。例如说这样的结构: 日期 12个字节,ID 4个字节,文件协议 4个字节,消息体 32个字节,消息体里面有分好多层,又包括消息头 21个字节,消息内容100个字节。如是说...目前我处理的方法,就是在我的class里面锁死每个数组的大小,按照12,4,4,32,21,100个字节这样一直读这个流中的数据,并转成int型或者是string~~ int TIME = 12;
int ID = 32;
int RESERVED = 32;
int HEAD_TOTAL = TIME+ID+RESERVED;
int HEAD[] ={TIME,ID,RESERVED};
String[] HEAD_STRING={"TIME","ID","RESERVED"};
File f = new File(directory, src);
File f_out = new File (directory, des);
RandomAccessFile in = new RandomAccessFile(f, "rw"); byte[] b = new byte[1024]; //the buffered byte-type array(100 btyes)// 设置要读取的字节位置
in.seek(0);
int len1 = in.read(b,0,HEAD[0]); int i = 0;
int j = 0;
while(len1!= -1){
System.out.println(HEAD_STRING[j]); switch(j){
case 0:
case 1:
case 2:{
int mask=0xff; //To int
int temp=0;
int n=0;
for(int k=0;k<4;k++){
n<<=8;
temp=b[k]&mask;
n|=temp;
}
System.out.println(n);
}; break;
......大家有没有好点的方法?这样读的话效率太低了,而且代码量相当的大~
int ID = 32;
int RESERVED = 32;
int HEAD_TOTAL = TIME+ID+RESERVED;
int HEAD[] ={TIME,ID,RESERVED};
String[] HEAD_STRING={"TIME","ID","RESERVED"};
File f = new File(directory, src);
File f_out = new File (directory, des);
RandomAccessFile in = new RandomAccessFile(f, "rw"); byte[] b = new byte[1024]; //the buffered byte-type array(100 btyes)// 设置要读取的字节位置
in.seek(0);
int len1 = in.read(b,0,HEAD[0]); int i = 0;
int j = 0;
while(len1!= -1){
System.out.println(HEAD_STRING[j]); switch(j){
case 0:
case 1:
case 2:{
int mask=0xff; //To int
int temp=0;
int n=0;
for(int k=0;k<4;k++){
n<<=8;
temp=b[k]&mask;
n|=temp;
}
System.out.println(n);
}; break;
......大家有没有好点的方法?这样读的话效率太低了,而且代码量相当的大~
不仅不好弄,在这个文件里面也是有好多这样的一组一组的信息,但是每组的长度又不是固定的,有的没有时间信息, 有的没有别的信息