????? 因为前一段上课,老师说:“咱们学校计算机专业毕业的学生,真正写过程序的人很少,现在程序员的标准是至少写过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); } }
?