有一日志文件具体格式如下:
TIME|RUNTIME|GROUPNUM|SC1_STATUS|SC2_STATUS|…
TIME: 本状态行记录的BCLAN运行状态的时间点,格式为
Week month date hour:minute:second year
例如2005年12月14日(星期三)8点00分30秒,记录为
Wed Dec 14 08:00:30 2005
RUNTIME: 记录BCLAN复用器从上次启动到现在的运行时间,格式为
Hour:minute:second
例如 88:32:09 表示从BCLAN复用器启动到现在已经连续运行了88小时32分09秒
GROUPNUM: 记录了输入到BCLAN复用器的业务成份SC的个数
SCx_STATUS: 记录了输入到BCLAN复用器的第x个业务成份SC在当前时间点的状态,日志记录行的例子如下
Wed Dec 14 10:02:55 2005|0:00:03|3|3,{0,"TestOne1",-1,-1,0,0,-1},{0,"TestOne2",-1,-1,0,0,-1},{0,"TestOne3",-1,-1,0,0,-1},{0,"",0,0,0,0,0}|1,{1,"TestOne4",-1,-1,0,0,-1},{1,"",0,0,0,0,0}|1,{2,"TestTwo ",-1,-1,0,0,-1},{2,"",0,0,0,0,0}
如何把他提取并显示出象下面的格式:
TIME: Wed Dec 14 08:00:30 2005
RUNTIME:   88:32:09 
GROUPNUM: SCx_STATUS:3
SCx_STATUS1:3,{0,"TestOne1",-1,-1,0,0,-1},{0,"TestOne2",-1,-1,0,0,-1},{0,"TestOne3",-1,-1,0,0,-1},{0,"",0,0,0,0,0}
SCx_STATUS2:1,{1,"TestOne4",-1,-1,0,0,-1},{1,"",0,0,0,0,0}
SCx_STATUS3:1,{2,"TestTwo ",-1,-1,0,0,-1},{2,"",0,0,0,0,0}
返回值是提取上面要求的字符串。希望能给源代码看看,谢谢!

解决方案 »

  1.   

    String log="";
    try {
      FileReader fr = new FileReader("logname.log");
      BufferedReader br = new BufferedReader(fr);
      log = br.readLine();//这个读取一行,估计.log都是一行一条吧
    }
    catch (FileNotFoundException e) {
    }
    catch (IOException ex) {
    }
    然后再对log拆分,用什么.subString()   .indexOf()的
    当然都写在循环里(可能有很多条吗那log就改用ArrayList吧),
    当br.readLine()=null了就结束了
    再关掉
    br.close();
    fr.close();//就OK了
      

  2.   

    试了一下,为什么.split()对"|"不好用呀?