- 计算一个文件夹下面所有文件的行数的函数:
- //path:文件的全路径(可能是文件夹、也可能是文件)
- //返回值 int:代码行数
- int codeLineCount (NSString *path)
- {
- //获取文件的管理者,是一个单例
- NSFileManager *fmgr = [NSFileManager defaultManager];
- //判断是文件还是文件夹。NO表示是文件,YES表示是文件夹
- BOOL dir = NO;
- //判断路径是否存在
- BOOL exist = [fmgr fileExistAtPath:path isDirectory:&dir];
- // 如果路径不存在,直接返回
- if(!exist)
- {
- NSLog(@"文件路径不存在!!!!");
- return 0;
- }
- //如果是文件夹
- if(dir)
- {
- NSLog(@"是个文件夹");
- //将当前文件夹里面的所有内容放入一个数组,只有名称,没有路径(包括文件和文件夹)
- NSArray *array = [fmgr 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"] && ![extension isEqualToStrting:@"c"])
- {
- return 0;
- }
- //将文件中的内容全部加载出来
- NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
- //将文件内容用回车键隔开,放入数组
- NSArray *array = [content componentsSeparatedByString:@"\n"];
- //返回数组的数量,就是当前文件的行数
- return array.count;
- }
- }
复制代码
|
|