/** * 統計項目中一共多少行代碼 */ public class CountLine { private double sumLine = 0 ; public File getRootFolder(String path) { File file = new File(path); if(file.exists()){ return file; }else{ try { throw new FileNotFoundException(); } catch (FileNotFoundException e) { e.printStackTrace(); } } return null; } public void getCountLines(File srcFile) { File[] files = srcFile.listFiles(); for(int i=0; i<files.length; i++){ File file = files[i]; if(file.isDirectory()){ getCountLines(file); }else{ sumLine += countFileLines(file); } } } public void getCountLines(String projectSrcPath){ File srcFile = getRootFolder(projectSrcPath); getCountLines(srcFile); } private int countFileLines(File file) { InputStream is = null ; InputStreamReader isr = null; try { is = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } try { isr = new InputStreamReader(is,"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } BufferedReader br = new BufferedReader(isr); String buffer = null ; int lines = 0; try { while((buffer = br.readLine())!=null){ if(!("".equals(buffer.trim()))){ lines++; } } } catch (IOException e) { e.printStackTrace(); } System.out.println("文件:"+file.getPath()+",行數爲:"+lines); return lines; } public double getSumLine() { return sumLine; } public void setSumLine(double sumLine) { this.sumLine = sumLine; } }