Java統計代碼行數


統計代碼行數

給一個文件目錄,遍歷該目錄下的所有文件,如果是.java文件,利用字符流讀取該java源文件,統計全部java文件的代碼共有多少行,java文件個數有多少提示:先獲取所有文件,如果文件名以java結尾則表示是Java文件。然后再計算所有Java文件的行數總合,以及Java文件的個數。

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**  
 * @ClassName: Work
 * @Description: 1.統計代碼行數
		給一個文件目錄,遍歷該目錄下的所有文件,如果是.java文件,利用字符流讀取該java源文件,統計全部java文件的代碼共有多少行,java文件個數有多少
		 提示:先獲取所有文件,如果文件名以java結尾則表示是Java文件。然后再計算所有Java文件的行數總
		合,以及Java文件的個數。
 * @author LYL
 * @date 2021-01-13 11:32:40
*/

public class Work {
	
	public static void main(String[] args) {
		//需要掃描統計的路徑
		File file = new File("C:\\Test");
		String str = null;
		try {
			//調用scan方法並拿到返回的字符串
			str = scan(file,0,0);
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("掃描完畢");
		String[] str2 = str.split(",");
		//將返回出的字符串解析為數字
		int lineNum = Integer.parseInt(str2[0]);
		int fileNum = Integer.parseInt(str2[1]);
		
		System.out.println("行數為:"+lineNum+",文件數為:"+fileNum);
	}
	
	public static String scan(File f,int LineNumber, int FileNumber) throws IOException {
		int lineNum = LineNumber;
		int fileNum = FileNumber;
		// 將傳入的File對象變成File數組
		File[] lf = f.listFiles();
		// 如果為空則結束這次方法。避免空指針異常
		if (lf == null) {
			return null;
		}
		// 循環遍歷lf中的每個File對象
		for (File f1 : lf) {
			// 如果當前遍歷到的這個File對象是文件夾
			if (f1.isDirectory()) {
				// 得到當前文件夾的路徑
				String path = f1.getAbsolutePath();
				// 重新調用當前方法,並傳入剛剛遍歷到的文件夾對象,行數和文件數,並用一個String接收返回的字符串
				String test = scan(new File(path),lineNum,fileNum);
				
				String[] str2 = test.split(",");
				//將拿到的返回出的字符串解析為行數和文件數
				lineNum = Integer.parseInt(str2[0]);
				fileNum = Integer.parseInt(str2[1]);
				// 如果當前File對象是一個文件
			} else {
				//判斷是不是java文件
				if(f1.getName().endsWith(".java")) {
					fileNum++;
				}
				// 輸出當前文件的名稱
				//System.out.println(f1.getName());
				//創建當前文件的對象
				File file = new File(f1.getAbsolutePath());
				
				FileReader fr = null;
				
				//創建字符流
				fr = new FileReader(file);
				int i = 0;
				while((i = fr.read())!=-1) {
					Character c = (char)i;
					//將讀出的字符轉換為字符串
					String temp = c.toString();
					//判斷字符串中有沒有換行
					if(temp.contains("\n")) {
						lineNum++;
					}
				}
				//關閉字符流
				fr.close();
			}
		}
		System.out.println("lineNum = "+lineNum+", fileNum = "+fileNum);
		//將行數和文件數返回
		return lineNum+","+fileNum;
	}
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM