日期:2014-05-20  浏览次数:20770 次

Java解析.dat二进制文件
有一个C++生成的.dat文件里面内容是以二进制数据格式存储用C解析出来的格式如下:

规范版本号:1.2
文件版本号:3.1
谱图类型编码:1
谱图生成时间:20130619155805
测试文件标志位:1
通道名称:tongdao1
放电类型:2
报警等级:0
放电类型概率统计标志:1
放电类型概率7个:0       90      0       0       0       0       0
放电相位窗口m:400
量化幅值n:60
工频周期p:40
50HZ相关性:-1.#QNAN
100HZ相关性:-1.#QNAN
局放谱图类型标志:1
幅值单位:0
放电幅值下限:-80
放电幅值上限:-20
分割符号:$$$$
0.000000
-35.799999
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
-35.799999
-35.799999
-35.799999
0.000000
0.000000
0.000000
0.000000
0.000000
-35.799999
0.000000
-35.799999
-35.799999
0.000000
0.000000
-35.799999

我用java解析怎么解析都是乱码,代码如下,求指点:

String fileName = "C:\\Users\\Administrator\\Desktop\\0312B12000042A3840001_003_01_201305241149172.dat";
FileInputStream fis = new FileInputStream(fileName);
DataInputStream dis = new DataInputStream(fis);
byte[] b = new byte[1024];
int len = 0;
while ((len = dis.read(b)) > 0) {
System.out.println(new String(b,"UTF-8"));
}
fis.close();
dis.close();

------解决方案--------------------
大哥,你真牛。
那个二进制文件,里面是有自己的数据格式的。
里面存储的并不是字符串。
那个显示的内容,是通过解析文件内的数据,最后显示给你的。
并不是说,里面存储的就是字符串。
------解决方案--------------------
你想要解析二进制文件,就先要把这个文件的数据格式,或者说,数据结构弄清楚才行。