java读取txt文件,使用正则表达式获取信息

废话不多说,直接上代码,主程序代码:

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetTimeFromLoggerTxt{
    /**
     * 获取日志文件中的时间
     * @throws FileNotFoundException
     */
    public static void main(String[]args) throws FileNotFoundException {
            //匹配次数
            int matchTime = 0;
            //存匹配上的字符串
            List<String> strs = new ArrayList<>();
            try {
                //编码格式
                String encoding = "UTF-8";
                //文件路径
                File file = new File("F:\\svn\\work\\Redis.txt");
                if (file.isFile() && file.exists()){ // 判断文件是否存在
                    //输入流
                    InputStreamReader read = new InputStreamReader(
                            new FileInputStream(file), encoding);// 考虑到编码格
                    BufferedReader bufferedReader = new BufferedReader(read);
                    String lineTxt = null;
                    //读取一行
                    while ((lineTxt = bufferedReader.readLine()) != null) {
                        //正则表达式
                        matchTime = getMatchTime(matchTime, strs, lineTxt);
                    }
                    read.close();
                } else {
                    System.out.println("找不到指定的文件");
                }
            } catch (Exception e) {
                System.out.println("读取文件内容出错");
                e.printStackTrace();
            }
            List<Integer> nums = getSum(strs);
            double avg = getAvgTime(nums,matchTime);
            System.out.print(avg);
    }

    private static int getMatchTime(int matchTime, List<String> strs, String lineTxt) {
        Pattern p = Pattern.compile("[0-9]*ms$");
        Matcher m = p.matcher(lineTxt);
        boolean result = m.find();
        String find_result = null;
        if (result) {
            matchTime++;
            find_result = m.group(0);
            strs.add(find_result);
        }
        return matchTime;
    }

    private static List<Integer> getSum(List<String> strs) {
        List<Integer> nums = new ArrayList<>();
        for(String str : strs) {
            String s = str.replace("ms","");
            Integer a = Integer.valueOf(s);
            nums.add(a);
        }
        return nums;
    }

    private static double getAvgTime(List<Integer> nums, int matchTime) {
        double sum = 0;
        double avg ;
        for(Integer num : nums){
            sum+=num;
        }
        avg = sum/matchTime;
        return avg;
    }
}

 

Redis.txt文件如下:

11-24 11:05:33 在redis中获取药品##ff4c978e-1dc4-4b28-a744-d3ed8aa725ea##耗时:15ms
11-24 11:05:33 在redis中获取药品##ff6a6b6a-7319-4006-8525-c9e2f96a1a71##耗时:33ms
11-24 11:05:33 在redis中获取药品##ff93cff9-7125-4394-9326-e6fdef8f0436##耗时:32ms
11-24 11:05:33 在redis中获取药品##ffc61566-7150-461e-97c8-2134092ab5ad##耗时:31ms
11-24 11:05:33 在redis中获取药品##ffca5bfc-965e-4cb0-b8a3-f287cdacf29b##耗时:20ms
11-24 11:05:33 在redis中获取药品##FFEE3495-09F3-465C-8EB0-EAD997E92C99##耗时:32ms
11-24 11:05:33 在redis中获取药品##FFFF8DC2-FFBC-4DE1-92EE-67BED80C7CED##耗时:30ms
11-24 11:05:33 **********在redis中获取规则##SelectDrug_Contraindication##耗时:50560ms*************
11-24 11:05:33 *****************************Usage************************************
11-24 11:05:33 在redis中获取药品##00618b04-f26a-4e70-b4c5-6c3510b68ac9##耗时:23ms
11-24 11:05:33 在redis中获取药品##009daa8f-3fef-4c68-b94b-113d7b2467f1##耗时:36ms
11-24 11:05:33 在redis中获取药品##00ed1b16-a2f1-4447-91b8-3f0055ee88d0##耗时:36ms
11-24 11:05:33 在redis中获取药品##01151b46-9951-4934-9247-9c1de4a14d11##耗时:38ms
11-24 11:05:33 在redis中获取药品##018472c5-a255-41c1-9151-474963fc7b0a##耗时:23ms
11-24 11:05:33 在redis中获取药品##01daa570-bd6c-491b-a988-bcedaafdd889##耗时:31ms
11-24 11:05:33 在redis中获取药品##01e8b0d4-e651-43eb-935c-7e6d3f649c12##耗时:32ms
11-24 11:05:34 在redis中获取药品##01ee3ec6-d6fc-4c16-94e1-73df56d4d9c8##耗时:34ms
11-24 11:05:34 在redis中获取药品##01fded77-b433-47d0-ae73-57fddbce8fd6##耗时:22ms
11-24 11:05:34 在redis中获取药品##021E93A8-C3A6-45EB-8562-662D3D960478##耗时:30ms
11-24 11:05:34 在redis中获取药品##022159ad-836e-4f1a-a509-a582da43b165##耗时:37ms
11-24 11:05:34 在redis中获取药品##0230c585-c94e-496b-992e-4935037e6ade##耗时:35ms
11-24 11:05:34 在redis中获取药品##024947a1-f762-42b3-99fe-bd8307db5056##耗时:19ms
11-24 11:05:34 在redis中获取药品##02abf1ce-aa2a-4741-945a-ff2b68a98820##耗时:34ms
11-24 11:05:34 在redis中获取药品##030b1784-2d1a-4da3-bcd8-0ff1c05df5db##耗时:37ms
11-24 11:05:34 在redis中获取药品##034d5ba0-1a85-44a4-ad39-b192f707a488##耗时:36ms
11-24 11:05:34 在redis中获取药品##035abc45-b31c-48b3-b5a1-7f989f66f982##耗时:36ms
11-24 11:05:34 在redis中获取药品##036b1558-9935-42b0-807c-ace55f5591e1##耗时:16ms


--------------------- 
作者:一轮明月半城沙 
原文:https://blog.csdn.net/dongzhongyan/article/details/78627030 

展开阅读全文

没有更多推荐了,返回首页