编程知识 cdmana.com

如何使用Java简单实现一个代码行数统计器

哈喽,我是小黑, 最近学了java的输入输出流后一直心痒痒,总想找一点事情来做,所以用java代码来实现了一下统计代码的所有行数,看一下我上大学以来到底打了多少行。

先附上实现代码吧!

package InOutStream;
import java.util.* ;
import java.io.* ;

class codeCount {
   
   
	private static int count ; //统计总行数
	private static int countCPP ;//CPP
	private static int countJAVA ;//java
	private static int countPY ;//python
	private String path ; //用于接收用户输入保存代码的文件夹的路径
	private int reading(String path) throws Exception {
   
    //该函数用来统计一个代码文件的行数
		FileReader reader = new FileReader(path) ;
		BufferedReader buffer = new BufferedReader(reader) ;
		int count = 0 ;
		while(buffer.readLine()!=null) {
   
   
			count ++ ;
		}
		buffer.close() ;
		reader.close() ;
		return count ;
	}
	private void caculate(String nowpath) throws Exception{
   
   //计数函数
		File nowfile = new File(nowpath) ;
		if (nowfile.isFile()) {
   
   
			if (nowpath.endsWith(".cpp")) {
   
   
				int sum = reading(nowpath) ;
				countCPP += sum ;
				count += sum ;
			}
			else if (nowpath.endsWith(".py")) {
   
   
				int sum = reading(nowpath) ;
				countPY += sum ;
				count += sum ;
			}
			else if (nowpath.endsWith(".java")) {
   
   
				int sum = reading(nowpath) ;
				countJAVA += sum ;
				count += sum ;
			}
			else {
   
   
				System.out.println(nowpath.substring(nowpath.indexOf("."))+":该类型文件不属于代码文件或该代码文件统计功能正在开发中,敬请期待!");
			}
		}
		else {
   
    //如果这个路径表示的是一个文件夹,则执行递归操作
			String []filesset = nowfile.list() ;
			for (String i:filesset ) {
   
   
				String newpath = nowpath + nowfile.separator + i ;//合成路径
				caculate(newpath) ;
			}
		}
	}
	public codeCount(String src) {
   
   
		path = src ;
	}
	public static int getLinesCPP() {
   
   
		return countCPP ;
	}
	public static int getLinesJAVA() {
   
   
		return countJAVA ;
	}
	public static int getLinesPY() {
   
   
		return countPY ;
	}
	public static int getLines() {
   
   
		return count ;
	}
	public void caculator() throws Exception {
   
    //外界包装
		this.caculate(path) ;
	}
	public String toString() {
   
    //重写toString方法
		return  "统计结果如下:\n" +
				"cpp行数:\n"+countCPP +
				"\njava行数:\n"+countJAVA +
				"\npython行数:\n"+countPY ;
	}
}

public class Count{
   
   
	public static void main(String []args) throws Exception {
   
   
		Scanner cin = new Scanner(System.in) ;
		System.out.println("请输入地址:");
		String path = cin.next() ;
		codeCount machine = new codeCount(path) ;
		machine.caculator(); 
		System.out.println(machine.toString());
		cin.close();
	}
}

实例:
我在桌面保存了一个文件夹用来保存代码:
在这里插入图片描述
打开后是这个样子:
在这里插入图片描述
取路径:
在这里插入图片描述
运行程序,将路径粘贴到程序之内






在这里插入图片描述
结果如下!!!
在这里插入图片描述
这就是所有代码拉!!如果你有其他什么实现方法或者意见或者建议,欢迎在评论区中提出来哦!


ps:由于我只学了c、cpp、java、python。所以代码中只针对这几种进行了统计,欢迎您修改代码来满足您的需求!!

接下来我会学习swing,到时候会尝试着把这个代码生成图形化界面。欢迎持续关注我拉!!!

谢谢阅读!!

版权声明
本文为[osc_lg0msmnd]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4267086/blog/4712259

Scroll to Top