关闭

Objective-C 计算文件夹里的代码行数

标签: objective-c计算代码行数
175人阅读 评论(0) 收藏 举报
分类:
//
//  main.m
//  计算代码行数
//
//  Created by waka on 15/7/9.
//  Copyright (c) 2015年 OC. All rights reserved.
//

#import <Foundation/Foundation.h>

NSInteger codeLineCount(NSString *path)// 计算文件夹代码函数
{
    // 获得 文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    // 判断 path 是文件 还是 文件夹
    BOOL dir = NO;// yes 是文件夹 no 不是文件夹
    // 判断 文件(夹) 是否存在
    BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
    if(!exist)
    {
        NSLog(@"输入有误!");
        return 0;// 输入的文件不存在  结束
    }
    
    if (dir)
    {// 是文件夹
        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; // 把当前文件/夹 里的东西放到一个数组里
        int count = 0;// 计代码数
        for (NSString *fileName in array)// 遍历数组里的所有文件/夹
        {
            // 获得 子文件/夹 的 全路径
            NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,fileName];
            count += codeLineCount(fullPath); // 递归调用~
        }
        return count;
    }
    else
    {// 不是文件夹
        //判断 文件扩展名 (把 字符 都转化成 小写  好判断~)
        NSString *extension = [[path pathExtension] lowercaseString];
        if (![extension isEqualToString:@"h"]&&![extension isEqualToString:@"m"])// 计算.h 和 .m 的
        {
            //NSLog(@"文件有误!");
            return 0;
        }
        // 加载文件内容
        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        //NSLog(@"%@",content);
        // 计算 有多少个换行
        NSArray *array = [content componentsSeparatedByString:@"\n"];// 函数意思是 把文件 按 什么(@“...”) 分割
       
        // 遍历 每一行 输出
        //    int i=0;
        //    for (NSString *line in array)
        //    {
        //        NSLog(@"%d--%@",i,line);
        //        i++;
        //    }
        
        // 觉得 输出的文件路径太长
        NSRange range = [path rangeOfString:@"/Users/waka/Documents/Objective-c/"];// 获得指定搜索的文件夹
        NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; // 把路径输出为 空
        
        NSLog(@"%@ - %ld",str,array.count); // 打印 文件路径及 单个文件代码行数
        return array.count;

    }

    
}
<pre name="code" class="objc">int main( )
{
    NSInteger count = codeLineCount(@"/Users/waka/Documents/Objective-c/");// 输入 要查的文件夹路径
    NSLog(@"%ld",count);
    
    return 0;
}




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2440次
    • 积分:240
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类