package temporary;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ProjectLine {
List<File> fileList = new ArrayList<>(); //存放项目中所有文件和文件夹
int lineNumber = 0; //记录项目的总行数
public void countLines(String projectName) throws IOException {
//当前项目在工作空间下的位置
String path = System.getProperty("user.dir");
//修改为需要统计行数项目的位置,注意在同一工作目录下
path = path.substring(0, path.lastIndexOf("\\")+1) + projectName + "\\src";
System.out.println("path = " + path);
//读取当前目录src下的所有文件
File file = new File(path);
File[] files = file.listFiles();
//存放所有文件
addAllFiles(files);
//统计行数
readLines();
System.out.println("Project \"" + projectName + "\" has " + lineNumber + " lines!");
}
//判断是否为文件夹,如是,继续往下查找判断,并将所有的文件和文件夹存放到fileList中
public void addAllFiles(File[] files) {
for (File file : files) {
fileList.add(file);
// System.out.println(file.toString());
if (file.isDirectory()) {
files = file.listFiles();
addAllFiles(files);
continue;
}
}
}
//读取所有文件的行数
public void readLines() throws IOException {
FileReader fr = null;
BufferedReader br = null;
for (File file : fileList) {
int temp = lineNumber; //记录已经统计过的文件总行书,用于计算当前文件的行数
if (file.isDirectory()) {
continue; //判断为目录的则不参加计数
}
fr = new FileReader(file);
br = new BufferedReader(fr);
String line = "";
while ((line = br.readLine()) != null) {
if (!isBlankLine(line)) {
lineNumber++;
}
}
System.out.println(file.getName() + " has " + (lineNumber - temp) + " lines.");
}
fr.close();
br.close();
}
//判断是否为空行
public boolean isBlankLine(String line) {
if (line.trim().length() == 0)
return true;
return false;
}
public static void main(String[] args) throws IOException {
ProjectLine pl = new ProjectLine();
String projectName = "Blog";
pl.countLines(projectName);
}
}
//output~
path = C:\Documents and Settings\Administrator\workspace\Blog\src
Search.java has 12 lines.
AllSort.java has 124 lines.
BubbleSort.java has 43 lines.
HeapSort.java has 101 lines.
InsertSort.java has 57 lines.
MergeSort.java has 103 lines.
QuickSort.java has 56 lines.
SelectSort.java has 48 lines.
ProjectLine.java has 71 lines.
ProjectLines.java has 80 lines.
Soilder.java has 30 lines.
Project "Blog" has 725 lines!
分享到:
相关推荐
用于统计项目的代码行数。在代码中修改路径即可。适用于多种文件格式。
支持 js java .net asp html .c vb sql 所有源码文件的代码行数统计,可统计文件夹内文件的代码行数。一键统计,快捷方便
可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...
java项目代码行数统计
免费的源代码行数统计工具,支持20多种代码格式。具有统计迅速、准确的优点...可以对 C++、VB.Net、VB、C#、JAVA、Delphi、ASP.Net、ASP、JSP、PHP、HTML 等项目的代码行数、工数和成本进行统计,并能保存统计的结果。
代码行统计工具用Java语言实现,可以对C\C++、Java的源代码进行统计,统计结果包括:总行数、空行数、注释行数和代码行数,统计结果可以以表格的形式显示给用户或另存为文件。 一 执行环境: 操作系统:WindowsNT/...
显示项目统计数量。 这个插件显示的是按扩展名排序的文件,以及大小、行数、LOC等。 用户可以选择统计(Project/Module/Package/File)范围,选择范围后需要点击Refresh,。 (这个插件需要Java1.8)
软件开发人员都可能要统计项目中的源代码行数,我上传的这个资源就是为了满足大家的这个需要。它能统计C/C++ VB C# Java Delphi txt/html asm等众多编程语言的源代码行数。
统计某一个版本的代码包相对于一个原始的基线代码包,变动的代码量 以及变动的代码量中各语言非空非注释行(NBNC)的结果 diffcount 缺省执行的就是差异统计,直接跟上两个代码包的目录即可 在diffcount目录下...
Java、C#、SQL 等程序源码进行详细的统计,可以准确的分 析出程序中代码行、注释行和空白行的行数。程序会自动根 据你选择的文件类型选择相应的统计方式,并将所有文件的 分析结果进行汇总,便于方便直观的对软件...
统计代码行数的工具kazoeca, 可以统计java,c,asp项目的代码修改量
代码统计工具这款软件是一款功能非常实用的统计软件,...这款软件支持30多种代码格式,可以统计代码行数、注释、空行、文件大小等数据而且这款软件可以让用户把统计结果保存为CSV或者HTML格式的文件,方便用户查看。
免费的源代码行数统计工具,支持20多种代码格式。可以对 VC++/.Net/JAVA/VB/Delphi/ASP/HTML 等项目的代码进行统计,并能保存统计的结果。 统计迅速、准确,是程序开发人员的必备工具
python小项目之统计代码行数与美化打印,数据存储,分析源码.zip
可以统计单个文件的代码行数,或者整个工程的代码行数。 不需安装,即下即用。 支持C,C++,BASIC,DELPHI,JAVA,ASM多种语言。 项目管理者、测试人员必用工具。
可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...
Java、C#、SQL 等程序源码进行详细的统计,可以准确的分 析出程序中代码行、注释行和空白行的行数。程序会自动根 据你选择的文件类型选择相应的统计方式,并将所有文件的 分析结果进行汇总,便于方便直观的对软件...