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;
}
}