`
QuarterLifeForJava
  • 浏览: 177711 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

简单初级代码行数统计

阅读更多
package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class Test {
	private static int sum = 0;
	private static int mid = 0;
	private static int total = 0;
	private static int countCondition = 1;
	public static void main(String[] args) throws Exception{
		//File f = new File("E:\\A.java");
		File f = new File("E:\\a");
		if(f.getPath().endsWith(".java")){
			System.out.println("代码一共:"+number(f)+"行");
		}else{
			listFile(f);
			System.out.println("代码一共:"+total+"行");
		}
	}
	public static void listFile(File file) throws Exception{
		if(file.isDirectory()){
			File list[] = file.listFiles();
			for(File ff:list){
				listFile(ff);
				if(ff.getPath().endsWith(".java")){
					sum+=number(ff);
					mid = 0;
					total+=sum;
					sum=0;
				}
			}
		}
	}
	public static int number(File file) throws Exception{
		InputStream is = new FileInputStream(file);
		LineNumberReader lnr = new LineNumberReader(new InputStreamReader(is,"UTF-8"));
		String line = null;
		int count = 0; 
		while((line=lnr.readLine())!=null){
			if(condition(line)){
				count++;
				if(countCondition>1){
					countCondition++;
				}
			}
		}
		return count - mid;
	}
	public static boolean condition(String line){
		boolean flag = false;
		if(line.trim().equals("")){
			//flag = false;
		}else if(line.trim().startsWith("/*")&&line.trim().endsWith("*/")){
			//flag = false;
		}else if(line.trim().startsWith("//")){
			//flag = false;
		}else if(line.trim().startsWith("/*")){
			countCondition++;
			flag = true;
		}else if(line.trim().endsWith("*/")){
			mid += (countCondition-1);
			countCondition = 1;
			flag = true;
		}else{
			flag = true;
		}
		return flag;
	}
}
分享到:
评论

相关推荐

    VB.NET 工程代码统计

    本项目"VB.NET 工程代码统计"专注于为开发者提供一个实用工具,能够快速准确地统计VB.NET工程中的代码行数,这对于评估项目开发量、跟踪工程进度以及进行代码质量分析都具有重要意义。 代码行数是衡量软件开发工作...

    支持所有文件,界面化代码行统计器

    总的来说,"支持所有文件,界面化代码行统计器"是一个强大且实用的工具,它简化了开发者对代码行数统计的过程,提高了工作效率,同时其全面的文件格式支持使其在各种项目环境中都能发挥重要作用。对于任何需要量化...

    统计VB函数行数小工具的源码(C#)

    标题中的“统计VB函数行数小工具的源码(C#)”指的是一个用C#编程语言编写的程序,它的主要功能是计算VB(Visual Basic)语言编写的函数中的代码行数。这样的工具在软件开发过程中非常有用,因为它可以帮助开发者...

    计算机二级C语言初级经典程序

    ### 计算机二级C语言初级经典程序解析 #### 1. 输出九九乘法表 **知识点**: - **循环结构**:双重`for`循环用于生成九九乘法表,外层循环变量`i`控制行数,内层循环变量`j`控制列数。 - **格式化输出**:`printf`...

    用VC实现判断文章中单词个数

    本篇文章将深入探讨如何使用VC来实现一个简单的程序,以计算文章中的单词个数以及行数。这个功能在文本处理、数据分析或自然语言处理(NLP)的初级项目中非常常见。 首先,我们需要理解“单词”的定义。在大多数...

    js实现扫雷小程序的示例代码

    11. **自定义难度**:扫雷游戏通常有不同难度级别(初级、中级、高级),这可以通过调整行数、列数和雷数来实现。在`mineCraft`构造函数中,`type`参数用于区分不同的游戏类型。 12. **GitHub源码**:代码作者提供...

    Quick Line Counter-开源

    这对于需要统计大量代码文件的项目尤其有用,避免了逐个文件手动计数的繁琐过程。 2. **文件类型过滤**:用户可以根据需要筛选特定类型的文件,例如只统计`.cpp`或`.java`文件,这样就可以针对性地关注特定编程语言...

    常用的shell命令.pptx

    9. **wc**: 统计文件的行数、单词数和字符数。 10. **touch**: 更新文件时间戳或创建新文件。 11. **date**: 显示或设置系统日期和时间。 12. **history**: 查看命令历史。 13. **wget**: 从网络下载文件。 14. **...

    UNIX 下AWK编程起步教程

    - `{action}`是满足条件后执行的代码块。 3. **AWK的内置变量** - `NR`记录已读取的行数。 - `NF`当前行的字段数。 - `$0`表示整个行,`$1`到`$n`分别代表每行的第1个到第n个字段。 4. **字段分隔符** - 默认...

    前五周知识汇总1

    - `size()` 输出矩阵的行数和列数,`length()` 返回矩阵的最大维度,`find()` 返回指定值的索引。 - `eye()`, `zeros()`, `ones()`, `diag()`, `rand()`, `magic()` 分别生成单位矩阵、全零矩阵、全一矩阵、对角...

    易语言超级列表框尾部添加合计-易语言

    本教程将详细讲解如何在易语言的超级列表框中实现尾部添加合计的功能,这对于数据展示和计算尤其有用,常见于财务、统计等应用。 首先,我们需要了解易语言中的“超级列表框”控件。它提供了丰富的属性、方法和事件...

    任意行文本读取-易语言

    同时,也可以根据具体需求对读取的行进行进一步的处理,比如查找关键字、统计信息等。 在提供的资源“[世恒帮您学易]-任意行文本读取.e”中,很可能是包含了一个易语言的源码示例,你可以通过运行和学习这个程序来...

Global site tag (gtag.js) - Google Analytics