命令行输入文件名,源代码计数器

目标2:从命令行输入一个参数(指定目录或文件),输出该目录下指定类型文件(.cs, .java)的个数、每个文件的总行数、空行数、注释行数、代码行数。

目标3:从命令行输入两个参数(指定目录或文件),(文件类型),输出该目录下指定类型文件(.cs, .java)的个数、每个文件的总行数、空行数、注释行数、代码行数。

下面代码可适用目标2、3……

import java.io.*; 
 
public class StaticsCodeingLine {  
  
    private static int whiteLines = 0;  
    private static int commentLines = 0;  
    private static int normalLines = 0;  
      
      
    /** 
     * @param args 
     */  
    public static void main(String[] args) throws IOException
    {
    	BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    	System.out.println("please input filename");
    	String filename=in.readLine();
    	try{
    		File f =new File(filename);
    		sumCode(f); 
    	}catch(ArrayIndexOutOfBoundsException e)  
        {  
            System.out.println("Usage:ShowFile File");  
            return;
            }
    
    }
      
    private static void sumCode(File file) {   
        BufferedReader br = null;   
        boolean comment = false;   
        try {   
            br = new BufferedReader(new FileReader(file));   
            String line = "";   
            try {   
                while ((line = br.readLine()) != null) {   
                    line = line.trim();   
                    if (line.matches("^[\s&&[^\n]]*$")) {   
                        whiteLines++;   
                    } else if (line.startsWith("/*") && !line.endsWith("*/")) {   
                        commentLines++;   
                        comment = true;   
                    } else if (true == comment) {   
                        commentLines++;   
                        if (line.endsWith("*/")) {   
                            comment = false;   
                        }   
                    } else if (line.startsWith("//")) {   
                            commentLines++;   
                    } else {   
                        normalLines++;   
                    }   
                }   
            } catch (IOException e) {   
                    e.printStackTrace();   
            }   
        } catch (FileNotFoundException e) {   
                e.printStackTrace();   
        } finally {   
            if (br != null) {   
                try {   
                    System.out.println("空行数:"+whiteLines);  
                    System.out.println("注释行数:"+commentLines);  
                    System.out.println("代码行数:"+normalLines);  
                    br.close();   
                    br = null;   
                } catch (IOException e) {   
                    e.printStackTrace();   
                }   
            }   
        }   
    }  
}

目标2运行结果

目标3运行结果

经验分享 程序员 微信小程序 职场和发展