2007-08-28
统计某目录下所有的java文件有效代码的行数
这个代码的功能是统计某个目录下的所有的java文件中的代码的行数
用到啦递归,还有少量的正则表达示,本来想看一下swing做一下图形界面
好看一些,但是自己方向不往那方面发展,还是算啦。写个中心的出来就行啦
有兴趣的可以看一下
java 代码
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- public class CountCodeLines
- {
- static int codeLines=0;
- static int whiteLines=0;
- static int commentLines=0;
- static int tatolLines=0;
- static boolean bComment=false;
- public static void main(String[] args)
- {
- StringBuffer pathName=new StringBuffer("H:\\spring-framework-2.0.6\\src\\org\\springframework");
- ComputeDirectoryAndFiles(pathName,0);
- System.out.println("Code Lines : "+(codeLines=tatolLines-commentLines-whiteLines));
- System.out.println("White Lines : "+whiteLines);
- System.out.println("Comment Lines : "+commentLines);
- }
- public static void ComputeDirectoryAndFiles(StringBuffer pathName,int level){
- File directory=new File(pathName.toString());
- File[] files=directory.listFiles();
- String prefix="";
- for(int i=0;i<level;i++)
- {
- prefix+="** ";
- }
- if(directory.isDirectory()){
- for(int i=0;i<files.length;i++)
- {
- if(files[i].isFile()&& files[i].getName().matches("^[a-zA-Z[^0-9]]\\w*.java$"))
- {
- computeLines(files[i]);
- }
- if(files[i].isDirectory())
- {
- pathName.append("/"+files[i].getName());
- level++;
- ComputeDirectoryAndFiles(pathName,level);
- int start=pathName.toString().length()-files[i].getName().length()-1;
- int end=pathName.toString().length();
- pathName.delete(start,end);
- level--;
- }
- }
- }
- }
- public static void computeLines(File file)
- {
- BufferedReader bf=null;
- try
- {
- bf=new BufferedReader(new FileReader(file));
- String lineStr="";
- while((lineStr=bf.readLine())!=null)
- {
- //总行数
- tatolLines++;
- //计算空行
- whiteLines(lineStr);
- //统计代码行数
- commendLines(lineStr);
- //计算代码的行数
- //codeLines(lineStr);
- }
- }
- catch (FileNotFoundException e)
- {
- System.out.println("文件没有找到");
- }catch(IOException ee)
- {
- System.out.println("输入输出异常 ");
- }finally
- {
- if(bf!=null)
- {
- try{
- bf.close();
- bf=null;
- }catch(Exception e)
- {
- System.out.println("关闭BufferReader时出错");
- }
- }
- }
- }
- public static void whiteLines(String lineStr)
- {
- if(lineStr.matches("^[\\s&&[^\\n]]*$"))
- {
- whiteLines++;
- }
- }
- public static void commendLines(String lineStr)
- {
- //判断是否是一个注释行
- //这里是单行注释的如 /*..... */或/**.... */
- if(lineStr.matches("\\s*/\\*{1,}.*(\\*/).*"))
- {
- commentLines++;
- }
- /**
- 这里是多行注释的
- */
- //这里的是当开始为/**或/*但是没有 */ 关闭时
- else if(lineStr.matches("\\s*/\\*{1,}.*[^\\*/].*"))
- {
- commentLines++;
- bComment=true;
- }
- else if(true==bComment)
- {
- commentLines++;
- if(lineStr.matches("\\s*[\\*/]+\\s*"))
- {
- bComment=false;
- }
- }
- else if(lineStr.matches("^[\\s]*//.*"))
- {
- commentLines++;
- }
- }
- //public static void codeLines(String lineStr)
- //{
- // if(lineStr.matches("\\s*[[^/\\*]|[//]]+.*"))
- // codeLines++;
- //}
- }
评论
richardlovejob
2007-12-03
我只是初学者,对这个也想过要写,先看看了你的。我把你的这个复制下来,然后编译都通不过,你有几个地方好象少写了一些什么吧。
比如,29行 for(int i=0;i 这个后面应该还有吧,编译报这里有错
还有同样的34行,不知道是不是你的错,反正先跟你提提希望多多指教我的不足。。
我的QQ35830757
希望能多多交流啊。
比如,29行 for(int i=0;i 这个后面应该还有吧,编译报这里有错
还有同样的34行,不知道是不是你的错,反正先跟你提提希望多多指教我的不足。。
我的QQ35830757
希望能多多交流啊。
发表评论
- 浏览: 16321 次
- 性别:

- 来自: 山水之乡

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Spring 中继承的实现
...
-- by xiao1955323 -
美丽的家乡(图多多)
贵州是个好地方:火锅大大得便宜!山水大大的漂亮!房子大大的便宜! 就是那边买衣服 ...
-- by citi.sh -
Spring 中事件的传递
替楼主加一下文字说明~见笑了~
-- by citi.sh -
Spring 中事件的传递
ApplocationContext中的事件处理是通过ApplicationEv ...
-- by citi.sh -
解决了struts2.0 严重: ...
这个错之前从来没见过,先试试你得办法吧!谢啦
-- by xiaxiaojuan






评论排行榜