whyclxw
2024-09-24 46351c8dd38e6cd76f2df1f607ccfd10df1bf509
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.whyc.service;
 
import com.whyc.res.RESData;
import com.whyc.res.RESDataHead;
import com.whyc.res.RESDataInfo;
import com.whyc.util.StaticInf;
import org.apache.catalina.connector.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
 
@Service
public class RESDataInfoService {
    //解析res内阻数据
    public static RESDataInfo readFileData(String filePath)
    {
        RESDataInfo resDataInfo=new RESDataInfo();
        int parse_result = StaticInf.PARSE_RESULT_NULL;
        FileInputStream fis = null;
        try {
            File f = new File(filePath);
            if(!filePath.endsWith(".BRES") && !filePath.endsWith(".bres")) {
                parse_result = StaticInf.PARSE_RESULT_FILETYPEERR;
            }
            if(!f.exists()) {
                parse_result = StaticInf.PARSE_RESULT_NOTFOUNDFILE;
            }
            fis = new FileInputStream(f);
            byte[] buf = new byte[4];
            if(fis.read(buf, 0, buf.length) == RESDataHead.BYTE_LEN)
            {
                if(resDataInfo.resDataHead.setHeadData(buf)) {
                    parse_result = StaticInf.PARSE_RESULT_SUCCESS;
                }else {
                    parse_result = StaticInf.PARSE_RESULT_FILEERROR;
                }
                while(true)
                {
                    if(resDataInfo.resDataHead.checkDataHead(fis))
                    {
                        byte[] databuf = new byte[RESData.DATABYTE_LEN];
                        if(fis.read(databuf) == databuf.length)
                        {
                            RESData resData = new RESData();
                            if(resData.setData(databuf)) {
                                resDataInfo.resDatas.add(resData);
                            }
                        }
                    }
                    if(fis.available() <1) {
                        break;
 
                    }
                }
            }else {
                parse_result = StaticInf.PARSE_RESULT_FILEERROR;
            }
 
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(null != fis)
            {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        resDataInfo.setParse_result(parse_result);
        return resDataInfo;
    }
 
    public static void main(String[] args) {
        String fileUrl="E:\\fileTest\\fbxtest\\resdata.bres";
        RESDataInfo info = readFileData(fileUrl);
        System.out.println(info);
    }
}