使用递归 算代码行数


    

NSInteger count = [self codeLineCount:@"/Users/yinyu2/Documents/sconit/Sconit"];


/** 使用递归 算代码行数

 *  @param path 文件路径

 *  @return 代码行数

 */

-(NSInteger) codeLineCount:(NSString *)path{

    //1获得文件管理者 单利

    NSFileManager *mgr = [NSFileManager defaultManager];

    //2判断path是文件还是文件夹

    BOOL dir = NO;

    BOOL exist =  [mgr fileExistsAtPath:path isDirectory:&dir];

    //3.如果不存在直接返回0

    if (!exist){

        return 0;

    }

    //4.说明文件存在

    if (dir) {是文件夹

        //装着当前文件夹下的所有内容(文件夹,文件);

        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];

        NSInteger count = 0;

        for (NSString * fileName in array) {

            //子文件的全路径

            NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,fileName];

            //累加每个子路径的总行数

            count += [self codeLineCount:fullPath];

        }

        return count;

    }else{是文件

        //1.判断文件拓展名(忽略大小写进行判断) 并且转成小写

        NSString *extension = [[path pathExtension]lowercaseString];

        //文件拓展名不是.h.m直接返回

        if (![extension isEqualToString:@"h"]&&![extension isEqualToString:@"m"]) {

            return 0;

        }

        //2加载文件内容

        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

        //根据/n分割

        NSArray *array = [content componentsSeparatedByString:@"\n"];

//        NSString *str =[path stringByReplacingOccurrencesOfString:@"/Users/yinyu2/Documents/sconit/Sconit" withString:@""];

//        NSLog(@"%@    %lu",str , (unsigned long)array.count);

        return array.count;

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值