java - Java中如何读取特定行

标签 java

我有一个包含这样内容的文件

Fri Sep 19 19:16:39 UTC 2014
Test launched. Check every minute for an update
minute 9:
ec2-54-84-5-158.compute-1.amazonaws.com: Requests per second:    926.13 [#/sec] (mean)
----------------------
minute 10:
ec2-54-84-5-158.compute-1.amazonaws.com: Requests per second:    919.23 [#/sec] (mean)
----------------------
minute 11:
ec2-54-209-65-210.compute-1.amazonaws.com: Requests per second:    547.62 [#/sec] (mean)
ec2-54-84-5-158.compute-1.amazonaws.com: Requests per second: 875.14 [#/sec] (mean)
----------------------
minute 12:
ec2-54-209-65-210.compute-1.amazonaws.com: Requests per second:    862.83 [#/sec] (mean)
ec2-54-84-5-158.compute-1.amazonaws.com: Requests per second: 876.78 [#/sec] (mean)
----------------------
minute 13:
ec2-54-209-65-210.compute-1.amazonaws.com: Requests per second:    857.37 [#/sec] (mean)
ec2-54-84-5-158.compute-1.amazonaws.com: Requests per second: 880.64 [#/sec] (mean)
----------------------

它基本上每分钟都会更新。所以我想从这两个“------------”行之间的最后一个 block 获取最后一个数据。最终目标是对该 block 每秒的请求进行求和。您能否指导我应用最佳逻辑?

最佳答案

此代码将识别每秒请求数(字段 #5),并将识别当前行和包含每秒请求数的最后(最近)行的每秒请求数之间的差异。

此代码假定每秒的请求数始终出现在紧接以世界“分钟”开头的行(不带引号)之后的行上。

    try{
        BufferedReader br = new BufferedReader(new FileReader("C:\\TEMP\\MINUTE.txt"));

        String   line;
        String[] lineFields;
        int      i;
        int      thisLine_minute;
        int      lastLine_minute;
        Double   thisLine_reqpersec;
        Double   lastLine_reqpersec;
        lastLine_minute   = 0;
        thisLine_reqpersec= 0.0;
        lastLine_reqpersec= 0.0;
        while ( (line = br.readLine()) != null) {

            lineFields = line.split("\\s+");
            System.out.printf("LINE READ: %s\n", line);
            for (i=0; i < lineFields.length; i++) {
                System.out.printf("FIELD: %d  IS: %s\n", i, lineFields[i]);
            }
            if (lineFields[0].toUpperCase().equals("MINUTE")) {
                thisLine_minute=1;
            }
            else {
                thisLine_minute=0;
            }
            try {
            if (lastLine_minute==1) {
                lastLine_reqpersec = thisLine_reqpersec;
                thisLine_reqpersec = new Double(lineFields[4]);
            }
            }
            catch (Exception excepStrToInt) {
                thisLine_reqpersec = 0.0;
            }
            System.out.printf("*** REQUESTS PER SECOND: %f\n", 
            thisLine_reqpersec);
            System.out.printf("*** REQUESTS PER SECOND: DIFFERENCE: %f\n", 
            (thisLine_reqpersec- lastLine_reqpersec));

            lastLine_minute=thisLine_minute;
        }
        br.close();
    }
    catch(Exception e){
    }

关于java - Java中如何读取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941297/

相关文章:

Java RegEx - 匹配参数列表

java 如何计算双变量中所有数字的总和

java - 裁剪后的图像在 android 中模糊

java - MS SQL服务器: Securing column level data

java - 如何找到线程在 Java 中运行的 Quartz 作业?

java - 文件创建方法

java - JBoss服务器启动问题

java - Spring REST MultipartFile 文件始终为空

java - 无法解释 ANTLRWorks 输出

java - 在我的代码中添加一个计时器