| | |
| | | package com.fgkj.alm;
|
| | |
|
| | | import java.io.File;
|
| | | import java.io.FileInputStream;
|
| | | import java.io.IOException;
|
| | | import java.nio.ByteBuffer;
|
| | | import java.nio.ByteOrder;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import com.fgkj.bres.FileDataParseInfo_Interface;
|
| | | import com.fgkj.data.ComBase;
|
| | |
|
| | | public class Alarm_DataInfo {
|
| | | public class Alarm_DataInfo implements FileDataParseInfo_Interface{
|
| | | public AlarmDataHead almDataHead;
|
| | | public List<AlarmData> almDatas;
|
| | | |
| | | public int parse_result = PARSE_RESULT_NULL; //文件解析结果
|
| | | public final int file_type = FILE_TYPE_ALM; //文件类型
|
| | |
|
| | | public Alarm_DataInfo() {
|
| | | almDataHead = new AlarmDataHead();
|
| | | almDatas = new ArrayList<Alarm_DataInfo.AlarmData>();
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public void readFileData(String filePath) {
|
| | | FileInputStream fis = null;
|
| | | try {
|
| | | File f = new File(filePath);
|
| | | if(!filePath.endsWith(".alm") && !filePath.endsWith(".ALM")) {
|
| | | System.out.println("文件格式错误");
|
| | | parse_result = PARSE_RESULT_FILETYPEERR;
|
| | | return;
|
| | | }
|
| | | if(!f.exists()) {
|
| | | parse_result = PARSE_RESULT_NOTFOUNDFILE;
|
| | | System.out.println("文件不存在..........");
|
| | | return;
|
| | | }
|
| | | fis = new FileInputStream(f);
|
| | | byte[] buf = new byte[4];
|
| | | if(fis.read(buf, 0, buf.length) == AlarmDataHead.BYTE_LEN)
|
| | | {
|
| | | if(this.almDataHead.setHeadData(buf)) {
|
| | | parse_result = PARSE_RESULT_SUCCESS;
|
| | | }else {
|
| | | parse_result = PARSE_RESULT_FILEERROR;
|
| | | }
|
| | | while(true)
|
| | | { |
| | | if(almDataHead.checkDataHead(fis))
|
| | | {
|
| | | byte[] databuf = new byte[AlarmData.BYTE_LEN];
|
| | | if(fis.read(databuf) == databuf.length)
|
| | | {
|
| | | AlarmData almData = new AlarmData();
|
| | | if(almData.setData(databuf)) {
|
| | | //System.out.println(resData);
|
| | | almDatas.add(almData);
|
| | | }
|
| | | }
|
| | | }
|
| | | if(fis.available() <1) {
|
| | | //System.out.println("解析完成");
|
| | | break;
|
| | | |
| | | }
|
| | | }
|
| | | }else {
|
| | | parse_result = PARSE_RESULT_FILEERROR;
|
| | | }
|
| | | |
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | } finally {
|
| | | if(null != fis)
|
| | | {
|
| | | try {
|
| | | fis.close();
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | }
|
| | |
|
| | | //告警头部数据
|
| | |
| | | //System.out.println("行数:"+record_line);
|
| | | return true;
|
| | | }
|
| | | |
| | | public boolean checkDataHead(FileInputStream fis)
|
| | | {
|
| | | boolean check_ok = false;
|
| | | boolean file_end = false;
|
| | | byte[] tag = new byte[1]; |
| | | try {
|
| | | while(true)
|
| | | {
|
| | | int n = 0;
|
| | | for(n=0; n<2; n++)
|
| | | {
|
| | | if(1 != fis.read(tag, 0, 1))
|
| | | {
|
| | | file_end = true;
|
| | | break;
|
| | | }
|
| | | if((0xAA != (tag[0]&0xFF)))
|
| | | {
|
| | | break;
|
| | | }
|
| | | }
|
| | | |
| | | if(n >= 2)
|
| | | {
|
| | | check_ok = true;
|
| | | break;
|
| | | }
|
| | | if(true == file_end)
|
| | | {
|
| | | break;
|
| | | }
|
| | | }
|
| | | } catch (IOException e) {
|
| | | //e.printStackTrace();
|
| | | } |
| | | return check_ok;
|
| | | }
|
| | | }
|
| | |
|
| | | //告警详情
|
| | |
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | |
| | | }
|