//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);
}
}
原文地址:http://irfen.iteye.com/blog/1185417
分享到:
相关推荐
在Java编程语言中,统计代码行数是一项常见的需求,它可以帮助...总的来说,通过Java实现代码行数统计是一个涉及文件操作、文本解析和条件判断的过程。在实践中,可以根据具体需求进行定制,以满足不同项目的统计要求。
标题提到的“代码行数统计工具”是专门用于计算源代码文件中行数的实用程序,适用于各种项目。这种工具能够帮助开发者、项目经理和质量保证人员了解项目的整体状况,进行进度跟踪、资源规划和复杂性分析。 代码行数...
在软件开发中,行数统计有时被用作衡量项目规模或工作量的一个指标,尽管这并不是非常精确,但对初步评估或比较项目大小有所帮助。 描述中的“界面美观,功能实用”意味着该统计器不仅提供了基本的代码行数统计功能...
总之,"java代码行数统计源码"提供的工具是一个实用的开发辅助程序,它综合运用了Java的文件操作、源代码解析、数据处理和可能的用户界面设计等多个技术领域,为开发者提供了一种量化评估项目规模的方式。...
4. `lineCount_fat.jar`:根据文件名,这可能是实现行数统计功能的打包JAR文件,可以直接运行来统计源码行数。 5. `.project`:这是Eclipse项目的元数据文件,包含了项目类型、构建配置等信息。 6. `msyh.ttc`:这是...
可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将...
Java代码行数统计工具是一种实用程序,它可以帮助开发者量化他们的工作量,跟踪项目进度,以及进行代码质量分析。这个zip文件包含的工具专门设计用来计算Java源代码中的行数,提供了一个直观的方式来了解代码库的...
IrisCodeCounter是一个轻量级的实用程序,旨在帮助开发者快速地计算项目中的源代码行数。通过这个工具,你可以得到关于项目整体规模的直观数据,这对于项目管理和团队协作具有重要意义。以下是一些关键知识点: 1. ...
在Java项目中,一个类通常代表一个独立的功能单元或对象。 统计Java代码行数的方法有很多种,这里我们将介绍手动统计和使用工具自动统计两种方式。 1. **手动统计**: - 打开`mypro.rar`压缩包,解压后找到包含...
SCounter.exe这个文件很可能是该代码行数统计器的可执行程序,用户只需运行它并指定待分析的源代码文件,就可以获取各个编程语言的代码行数统计报告。这种工具通常会扫描文件,识别语言特定的语法结构来区分代码、...
总的来说,"万能源代码行数统计器"是一个强大的工具,能够帮助开发者快速获取项目代码量的信息,从而更好地进行项目管理和优化。无论是用于个人项目还是团队协作,它都能提供重要的参考数据。同时,其支持多种编程...
程序源代码行数统计工具是一种实用的软件开发辅助工具,主要用于量化分析代码库的规模。在软件工程中,代码行数(LOC,Lines of Code)常被用作衡量项目复杂度和工作量的一个指标,虽然它并非完美的度量标准,但仍然...
在压缩包内的文件"Cmtw.exe"很可能就是这个日文版的代码行数统计工具的可执行程序。通常,.exe文件是Windows操作系统下的可执行程序,用户可以直接运行以启动工具,无需安装额外的环境或组件。 总的来说,这个工具...
总的来说,SourceCounter是一款强大而实用的代码统计工具,它简化了代码行数统计的过程,为软件开发团队提供了有价值的数据参考,有利于项目的规划、管理与优化。无论是个人开发者还是大型团队,SourceCounter都能...
代码行数统计小工具是一款专为开发者设计的实用软件,主要功能是快速、准确地统计项目中的源代码行数。这个工具在软件开发过程中尤为重要,因为它可以帮助开发者了解项目的规模,评估工作量,以及进行代码质量分析。...
Java编写的源代码行数统计器是一款用于计算项目中源代码行数的工具,它具有用户友好的界面和高精度的统计能力。该工具的主要功能是帮助开发者或团队管理者快速了解项目的规模,评估代码复杂性,以及跟踪项目的发展...