天天看點

java代碼行數電腦

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.util.ArrayList; 
import java.util.List; 
  
/** 
 * ********************************************** 
 * @description 計算源代碼(src)行數,不計算空行 
 *     宗旨:将src下所有檔案組裝成list,再篩選出檔案,對檔案進行周遊讀取 
  * @version 1.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(0, path.length() - 24) + projectName + "/src"; 
        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; 
            } 
        } 
    } 
  
    //将src下所有檔案組織成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; 
                } 
                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 = "";     //這裡傳入你的項目名稱 
        lc.counter(projectName); 
    } 
}      

感謝您的閱讀,如果文章中有錯誤或者您有什麼好的建議,也歡迎您直接留言批評指教。Thanks,friends!