无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

计算源代码行数

Posted on 2009-06-27 22:16 Gavin.lee 阅读(571) 评论(0)  编辑  收藏 所属分类: java SE & EE
今天心血来潮,想算算目前项目代码行数,呵呵,不藏私,大家共享一下。
package com.yixun.wap;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

/**
 * **********************************************
 * @description 计算源代码(src)行数,不计算空行
 *     宗旨:将src下所有文件组装成list,再筛选出文件,对文件进行遍历读取
 * 
@author Gavin.lee
 * @date Jun 27, 2009    2:00:12 PM
 * 
@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 path = System.getProperty("user.dir");
        String path = LineCounter.class.getResource("/").getPath();  // 同下个path
        path = path.substring(0, path.length() - 24+ "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();
        lc.counter();
    }

}

只有注册用户登录后才能发表评论。


网站导航: