zoukankan      html  css  js  c++  java
  • 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;
    }
    }

    截图:

  • 相关阅读:
    linux命令大全
    IP协议
    TCP、IP、ARP协议之间的工作关系
    程序出现问题后
    HTTP(超文本传输协议)
    多线程
    syslog.conf文件
    logger命令
    gdb
    二、数据的存储结构
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7289816.html
Copyright © 2011-2022 走看看