OC-统计代码行数

来源:互联网 发布:ds数据精灵使用教程 编辑:程序博客网 时间:2024/06/09 19:11
#import <Foundation/Foundation.h>//统计代码行数函数(运用递归)/* url :文件的全路径,可能是文件可能是文件夹 返回值  NSUInteger  :代码行数 */NSUInteger codeLineCount(NSString *url){    //1、设置文件管理者对象,判断文件是否存在    NSFileManager *manager = [NSFileManager defaultManager];        //2、判断文件是文件夹还是文件    BOOL dir = NO;        //3、设置变量判断文件是否存在    BOOL isExist = [manager fileExistsAtPath:url isDirectory:&dir];        //如果不存在return 0;    if (!isExist) {        NSLog(@"文件路径不存在!");        return 0;    }            //代码来到这说明路径存在    //如果是文件夹...    if (dir) {        //获取当前文件夹path下面的所有内容(文件夹、文件)名 存在数组中        NSArray *aryPath = [manager contentsOfDirectoryAtPath:url error:nil];                //定义一个变量保存path中所有文件的总行数        NSUInteger count = 0;                //遍历数组中所有子文件(夹)名        for (NSString *fileName in aryPath) {            //获取子文件(夹)的全路径,运用递归            NSString *fullPath = [NSString stringWithFormat:@"%@/%@",url,fileName];                        //递归累加所有代码行数            count+=codeLineCount(fullPath);        }        return count;    }    //如果是文件    else{        //判断文件的扩展名,将文件扩展名都转化成lowercaseString小写字母便于之后判断        NSString *extension = [[url pathExtension]lowercaseString];                if (!([extension isEqualToString:@"m" ] || [extension isEqualToString:@"h"] || [extension isEqualToString:@"h"])) {            //文件扩展名不是h/m/c            return 0;        }                //加载文件内容        NSString *content = [NSString stringWithContentsOfFile:url encoding:NSUTF8StringEncoding error:nil];                //按换行符分割存入数组中        NSArray *aryFile = [content componentsSeparatedByString:@"\n"];                        //返回行数        return aryFile.count;    }            return 0;}int main(int argc, const char * argv[]) {    @autoreleasepool {        NSString *url = @"/Users/qiuxuewei/Documents/IOSWorkspace";        NSLog(@"代码行数:%ld",codeLineCount(url));    }    return 0;}

原创粉丝点击