• Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)


    要求:统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)

      分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数。使用字符缓冲流读取文件,首先判断是否是块注释开头,接着判断是否是块注释结尾,再判断是否是单行注释或者空白行,若都不是则是有效代码,统计行数+1。

      对于文件夹路径,采用递归的方法判断子条目是文件还是文件夹,是文件就调用静态统计方法。源代码:

        

    public class CalculateRow {
    public static void main(String[] args) {
    /* File file = new File("D:\web\zuoye\src\test\CalculateRow.java") ;
    calculaterow(file) ;*/
    File newfile = new File("D:\web\zuoye\src") ;
    calculateFile(newfile) ;
    File[] files = newfile.listFiles() ;
    /* for(File f: files){
    System.out.println(f);
    }*/
    /* int sum = 0 ;
    for (int i = 0; i < files.length; i++) {
    if(files[i].isDirectory()){
    File[] filesi = files[i].listFiles() ;
    for (int j = 0; j < filesi.length; j++) {
    int num = calculaterow(filesi[j]);
    sum+=num ;
    }
    }else{
    int num = calculaterow(files[i]);
    sum+= num ;
    }
    }
    System.out.println(newfile+"文件夹下的文件的代码行数总共有:"+sum);*/
    }
    public static void calculateFile(File ff){
    int sum =0 ;
    if(ff.isDirectory()){
    File[] files = ff.listFiles() ;
    for(File f1: files){
    if(f1.isDirectory()){
    calculateFile(f1) ;
    }else{
    int num =calculaterow(f1) ;
    sum +=num ;
    }
    }
    System.out.println(ff+"文件夹下的所有文件的代码行数总共:"+sum);
    }else if(ff.isFile()) {
    int num = calculaterow(ff) ;
    sum +=num ;
    System.out.println(ff+"文件下的所有文件的 代码行数总共:"+sum);
    }else{
    System.err.println("输入的文件地址格式不对");
    }

    }

    public static int calculaterow(File f){
    int num= 0 ;
    if(f.isFile()){
    try {
    BufferedReader br = new BufferedReader(new FileReader(f)) ;
    String str ;
    boolean flag = false ;
    while((str=br.readLine())!=null){
    String newstr = str.trim() ;
    if(newstr.startsWith("/*")){
    flag =true ;
    }else if (newstr.endsWith("*/")){
    flag = false ;
    }
    else if(newstr.startsWith("//")||newstr.length()==0){
    num+=0 ;
    }else if(!flag){
    num+=1 ;
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }else {
    System.out.println("不是文件!");
    }
    System.out.println(f+"文件的代码行数是:"+num);
    return num;
    }
    }

    截图:

  • 相关阅读:
    中国身份证号码验证
    防止盗链下载问题
    Microsoft .NET Pet Shop 4 架构与技术分析
    常用操作封装类
    ASP.NET 2.0页面框架的几处变化
    普通字符串与HTML相互转换的小经验
    HttpWebRequest实现读取天气预报信息
    事务回滚 c# .net代码
    CAJViewer,AdobeReader等阅读器实现金山词霸屏幕取词功能
    01背包问题动态规划详解
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7289816.html
Copyright © 2020-2023  润新知