zoukankan      html  css  js  c++  java
  • [Java] 正则表达式 02 EmailSpider 抓邮件, CodeCounter 统计程序有效代码行数

    EmailSpider.java

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    
    public class EmailSpider {
    
        public static void main(String[] args) {
            try {
                BufferedReader br = new BufferedReader(new FileReader("D:\share\EmailHtm\email.htm"));
                String line = "";
                while((line=br.readLine()) != null) {
                    parse(line);
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        private static void parse(String line) {
            Pattern p = Pattern.compile("[\w[.-]]+@[\w[.-]]+\.[\w]+");
            Matcher m = p.matcher(line);
            while(m.find()) {
                System.out.println(m.group());
            }
        }
    
    }

    CodeCounter.java

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class CodeCounter {
        
        static long normalLines = 0;
        static long commentLines = 0;
        static long whiteLines = 0;
        
        public static void main(String[] args) {
            File f = new File("D:\share\JavaProjects\CodeCounter\src");
            File[] codeFiles = f.listFiles();
            for(File child : codeFiles){
                if(child.getName().matches(".*\.java$")) {
                    parse(child);
                }
            }
            /*
             * 
             * */
             
            System.out.println("normalLines:" + normalLines);
            System.out.println("commentLines:" + commentLines);
            System.out.println("whiteLines:" + whiteLines);
            
        }
    
        private static void parse(File f) {
            BufferedReader br = null;
            boolean comment = false;
            try {
                br = new BufferedReader(new FileReader(f));
                String line = "";
                while((line = br.readLine()) != null) { // readLine() 已经吃掉了后面的换行符号
                    line = line.trim();
                    if(line.matches("^[\s&&[^\n]]*$")) {
                        whiteLines ++;
                    } else if (line.startsWith("/*") && !line.endsWith("*/")) {
                        commentLines ++;
                        comment = true; 
                    } else if (line.startsWith("/*") && line.endsWith("*/")) {
                        commentLines ++;
                    } else if (true == comment) {
                        commentLines ++;
                        if(line.endsWith("*/")) {
                            comment = false;
                        }
                    } else if (line.startsWith("//")) {
                        commentLines ++;
                    } else {
                        normalLines ++;
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(br != null) {
                    try {
                        br.close();
                        br = null;
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
    }
    

  • 相关阅读:
    不兼容结构的协调—适配器模式(三)
    Java的时间空间复杂度详解
    Java学习笔记之变量和类变量的访问哲学
    求最大公约数-辗转相除法
    java中怎么遍历HashMap
    Java编程时如何节省内存,效率高
    Java入门需掌握的30个基本概念
    Java各种获取系统当前时间方法和格式
    Java 实现顺序结构线性列表
    Java编程中异常处理的优劣之道
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786822.html
Copyright © 2011-2022 走看看