基于一个值提取2个单独的记录,并使用java复制到2个单独的文件

时间:2016-08-02 06:51:24

标签: java java.util.scanner

我有一个日志文件,如下所示:

TxID=JM-70106-7001-20150803150010-588177-ITP-5793501-JM013MJBT458T
TxIN =JM7001                            20150803150010588177ITP57935015793570185JM013MJBT458T           RCOLE012  EITP7010600000
InitTX=1
LogTX=1
ProcessTX=0
DeliverTX=0
LogTX=0
DeliverTXstats=0
TXstat=Request  TX Complete
TxOUT=JM7001                            20150803150010588177ITP57935015793570185JM013MJBT458T           RCOLE012  EITP7010600000
 }]
TxID=JM-70106-7001-20150803150010-588177-ITP-5793501-JM013MJBT458T
TxIN =JM7002                           20150803150010588177ITP57935015793570185JM013MJBT458T           RCOLE012  EITP7010600000
InitTX=0
LogTX=0
ProcessTX=0
DeliverTX=1
LogTX=2
DeliverTXstats=0
TXstat=Response TX Complete
TxOUT=JM7002                           20150803150010588177ITP57935015793570185JM013MJBT458T           RCOLE012  EITP7010600000
 }]

我需要根据以下条件使用Java程序从日志文件中提取成功的请求和响应原始消息: 1.扫描具有“TxID = ...”

的行
  1. 查看下一个第8行是否有“TXstat =请求TX完成”。如果是这样,请立即获取下一行,这是一条成功的原始请求消息。

  2. 从步骤1中扫描具有相同TxID = ...的行,并检查“TXstat = Response TX Complete”的行。

  3. 获取与步骤2中找到的请求相对应的下一行成功回复。

  4. 重复步骤1~4以查找所有成功的请求和响应消息,并将它们放在单独的Request和Response输出文件中。

    我编写了一段代码但不确定如何满足所有条件。

    Java Code

    代码的主要部分:

    public static void main(String [] args)抛出IOException {

        prop=GetReqResRawMsg.readPropertiesFile();
        String line;
        String brokerInputFileName=prop.getProperty("brokerInputFileName");
        String brokerRequestFileName=prop.getProperty("brokerRequestFileName");
        //String brokerReponseFileName=prop.getProperty("brokerResponseFileName");
    try(BufferedReader reqReader1 = new BufferedReader(new InputStreamReader(new FileInputStream(brokerInputFileName)));
        BufferedReader reqReader2 = new BufferedReader(new InputStreamReader(new FileInputStream(brokerInputFileName)));
            FileWriter fileWriter=new FileWriter(brokerRequestFileName);
            ){
    
        while((line=reqReader1.readLine())!=null){
            //System.out.println(line);
            Scanner request=new Scanner(line).useDelimiter("TxID");
            while(request.hasNextLine()){
                String txOut=request.nextLine();
                String reqOut;
                if(txOut.indexOf("TXstat=Request  TX Complete")!=-1)
            {
                reqOut=reqReader1.readLine();
                if(reqOut.indexOf("TxOUT")!=-1){
    
                    String[] splitreqOut=reqOut.split("=");
                    String reqRawMess=splitreqOut[1];
    
                    fileWriter.write(reqRawMess);
                    fileWriter.append("\n");
    
                }   
            }   
    
            }
    
        }
    }
    }
    

    感谢任何帮助!!

    此致 KARTHIK

0 个答案:

没有答案