Java版 项目 行数统计程序_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java版 项目 行数统计程序

Java版 项目 行数统计程序

 2011/10/7 7:55:07  irfen  http://irfen.iteye.com  我要评论(0)
  • 摘要:因为前一段上课,老师说:“咱们学校计算机专业毕业的学生,真正写过程序的人很少,现在程序员的标准是至少写过3w行代码,不然算不上程序员;是自己设计程序,而不算那些抄的,照书上打的等。”我表示认同,只是说我们学校吧,是这样的,几乎没什么人写过程序。前一段刚完成一个项目,闲着无聊,就写了一个程序,只需要修改项目名称就可以知道项目总代码数,当然,程序很简单,大家都能写出来,我只是提供给参考,有好的建议希望高手提出来。//packageorg.linecount.counter;importjava
  • 标签:程序 Java 项目

????? 因为前一段上课,老师说:“咱们学校计算机专业毕业的学生,真正写过程序的人很少,现在程序员的标准是至少写过3w行代码,不然算不上程序员;是自己设计程序,而不算那些抄的,照书上打的等。”

????? 我表示认同,只是说我们学校吧,是这样的,几乎没什么人写过程序。

????? 前一段刚完成一个项目,闲着无聊,就写了一个程序,只需要修改项目名称就可以知道项目总代码数,当然,程序很简单,大家都能写出来,我只是提供给参考,有好的建议希望高手提出来。

?

?

//package org.linecount.counter;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

/**
 * 计算一个项目中文件总行数
 * @author Irfen
 * @version 1.0.0
 */
public class LineCounter {

    List<File> list = new ArrayList<File>();
    int linenumber = 0;
    FileReader fr = null;
    BufferedReader br = null;
    public void counter(String projectName) {
//        String path = System.getProperty("user.dir");

        String path = LineCounter.class.getResource("/").getPath();  // 同下个path

        //具体项目路径因版本不同会有差异,下面会打印路径,请根据实际情况修改路径截取长度
        path = path.substring(1, path.length() - 22) + "/" + projectName;
        System.out.println(path);
        File file = new File(path);
        File files[] = null;
        files = file.listFiles();
        addFile(files);
        isDirectory(files);
        readLinePerFile();
        System.out.println("Totle:" + linenumber + "行");
    }
    // 判断是否是目录
    public void isDirectory(File[] files) {
        for (File s : files) {
            if (s.isDirectory()) {
                File file[] = s.listFiles();
                addFile(file);
                isDirectory(file);
                continue;
            }
        }
    }
    //将项目下所有文件组织成list
    public void addFile(File file[]) {
        for (int index = 0; index < file.length; index++) {
            list.add(file[index]);
            // System.out.println(list.size());
        }
    }
    //读取所有非空白行
    public void readLinePerFile() {
        try {
            for (File s : list) {
                int yuan = linenumber;
                if (s.isDirectory()) {
                    continue;
                }
                
                //扫描的文件类型
                if(s.getName().indexOf(".jsp") != -1 || 
                		s.getName().indexOf(".java") != -1 || 
                		s.getName().indexOf(".htm") != -1 || 
                		s.getName().indexOf(".html") != -1 || 
                		s.getName().indexOf(".js") != -1 || 
                		s.getName().indexOf(".css") != -1 ) {
                	fr = new FileReader(s);
                    br = new BufferedReader(fr);
                    String i = "";
                    while ((i = br.readLine()) != null) {
                        if (!isBlankLine(i))//如果想加入空白行,请注释此行
                            linenumber++;
                    }
                    System.out.print(s.getName());
                    System.out.println("\t\t有" + (linenumber - yuan) + "行");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (Exception e) {
                }
            }
            if (fr != null) {
                try {
                    fr.close();
                } catch (Exception e) {
                }
            }
        }
    }
    //是否是空行
    public boolean isBlankLine(String i) {
        if (i.trim().length() != 0) {
            return false;
        } else {
            return true;
        }
    }
    public static void main(String args[]) {
        LineCounter lc = new LineCounter();
        String projectName = "ufo";     //这里传入你的项目名称
        lc.counter(projectName);
    }
}

?

发表评论
用户名: 匿名