如何使用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();
	}
}

实例:
我在桌面保存了一个文件夹用来保存代码:
coding-如何使用Java简单实现一个代码行数统计器-
打开后是这个样子:
coding-如何使用Java简单实现一个代码行数统计器-
取路径:
coding-如何使用Java简单实现一个代码行数统计器-
运行程序,将路径粘贴到程序之内

coding-如何使用Java简单实现一个代码行数统计器-
结果如下!!!
coding-如何使用Java简单实现一个代码行数统计器-
这就是所有代码拉!!如果你有其他什么实现方法或者意见或者建议,欢迎在评论区中提出来哦!

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

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

谢谢阅读!!

匿名

发表评论

匿名网友